HM-Dis-EP-WM55 Status von HmIP-SCI als Text darstellen

Kabellose und kabelgebundene Sender und Empfänger der klassischen Homematic-Serie

Moderator: Co-Administratoren

EifelPaule
Beiträge: 10
Registriert: 21.11.2021, 00:29
System: CCU
Hat sich bedankt: 11 Mal

HM-Dis-EP-WM55 Status von HmIP-SCI als Text darstellen

Beitrag von EifelPaule » 23.11.2021, 10:03

Guten Morgen zusammen,

mein Name ist Thomas und ich bin seit längerem passiver Nutzer dieses Forums.

Vor einigen Jahren habe ich mein neues Hobby Hausautomation entdeckt. Angefangen mit ganz simplen
Funksteckdosen aus dem Baumarkt, über das ELV FS 20 System bis heute zur Homematic CCU3 mit rund
50 Geräten, diversen Programmen und Systemvariablen.
Inzwischen eine CCU3 in meinem Haus und eine in meinem Elternhaus. Über Cloudmatic von überall erreichbar
und Benachrichtigungen für wichtige Dinge per Push Nachricht.
Weiterhin im Haus diverse Lupus Kameras, Velux Dachfenster automatisiert und last not least Rademacher
Rolladensteuerung. Alles auch per App von unterwegs ......
Dazu habe ich mich bzgl. der Homematic auch immer mal der Tipps und Anregungen hier im Forum bedient.

Jetzt habe ich mir die Display-Statusanzeige mit E-Paper-Display ( HM-Dis-EP-WM55 ) zugelegt und bin an meine
autodidaktischen Grenzen gestossen. Ich brauche Hilfe!!!

Hintergrund - wir haben ein großes Grundstück und an der Einfahrt ein Einfahrtstor. Wir haben einen Hund der
gern bei Öffnung der Haustüre durchschlüpft und nach vorne zum Tor rennt. Wenn das Tor dann offen ist auch gern
auf die Straße um anderen Hunden sehr deutlich zu erklären dass es seine Straße ist .........
Daraufhin habe ich dann eine Homematic IP Kontakt-Schnittstelle ( HM-IP-Sci ) mit einem Magnetkontakt am Tor
installiert. Darstellung des Status auf einer Funk-Statusanzeige ( HM-Dis-TD-T ) die aber mechanisch schaltet
und dabei recht laut ist. Unser Hund hat schnell gelernt und jeder Schaltvorgang wird zusätzlich mit Bellen
quittiert weil er glaubt jemand betritt unser Grundstück.

Jetzt habe ich das E-Paper-Display im Einsatz und festgestellt, dass kann nicht nur über die WEB-Oberfläche programmiert
werden sondern dazu gehört auch die Script-Programmierung. Ich habe schon einige Zeit investiert - das Script von DrTob
habe ich soweit angepasst aber der letzte Schliff fehlt und das bekomme ich nicht hin. Vielleicht bin ich schon zu alt,
begriffsstutzig oder einfach zu blöde .........

Da brauche ich bitte Hilfe - wenn möglich bitte gebrauchsfertig. Ich würde es mir dann anschauen und versuchen
zu verstehen für zukünftige Änderungen oder Erweiterungen. Hier sind die Punkte welche ich nicht hinbekomme:

1)
In der mittleren Zeile steht jetzt eine 0 oder 1 - analog zu offen oder zu. Ich möchte dort stehen haben
Tor " offen " oder Tor " zu ". Die Umwandlung der Ziffer in Text bekomme ich nicht hin.

2)
Der Text " Grad " soll ersetzt werden durch das Zeichen "°" und C.
Das habe ich irgendwo mal im Netz gefunden aber finde es nicht mehr ........

3)
Zum Schluss der Name des Scriptes. Dargestellt in der WEB-Oberfläche wird ab dem ersten Zeichen alles immer
weiter. Den Text kann ich ändern, aber da soll nur stehen " Script Einfahrtstor ". Wie geht das?

Vielleicht hat jemand Zeit und Lust mir zu helfen und das Script dahingehend anzupassen, wäre echt dankbar.

Ich habe das Script angehängt, ein Bild der Anzeige und ein Screenshot der Programmierung.

Ich hoffe das ist ausreichend, wenn nicht bitte melden.

Weiterhin habe ich mich bemüht die Forumsregeln einzuhalten, ich hoffe das ist mir gelungen.

Auch das der erste Post wegen Spam frei gegeben werden muss habe ich gelesen.

Jetzt hoffe ich mal auch baldige Hilfe und das jemand dazu Lust und Zeit hat ......

VG, Thomas - EifelPaule

Code: Alles auswählen

!! Universalprogramm zum Füllen des HM-Disp-EP-WM55
!! (c) DrTob
!! Version 1.01



! Symbole 
! 0x80 AUS
! 0x81 EIN
! 0x82 OFFEN
! 0x83 geschlossen
! 0x84 fehler
! 0x85 alles ok
! 0x86 information
! 0x87 neue nachricht
! 0x88 servicemeldung


! Zugriff auf vordefinierte Texte
! 0x80 Textblock  1
! 0x81 Textblock  2
! 0x82 Textblock  3
! 0x83 Textblock  4
! 0x84 Textblock  5
! 0x85 Textblock  6
! 0x86 Textblock  7
! 0x87 Textblock  8
! 0x88 Textblock  9
! 0x89 Textblock 10


! Tonfolgen 
! 0xC0 AUS
! 0xC1 LANG LANG
! 0xC2 LANG KURZ
! 0xC3 LANG KURZ KURZ
! 0xC4 KURZ
! 0xC5 KURZ KURZ
! 0xC6 LANG

!Signale
! 0xF0 AUS
! 0xF1 Rotes Blitzen
! 0xF2 Grünes Blitzen
! 0xF3 Orangenes Blitzen

!Seriennummer des HM-Disp-EP-WM55.
string seriennummer = "NEQ1596554";

!Variablen für die Texte und Icons
!Nicht verwendete Variablen nicht löschen, sondern auf "" setzen!
!Zeilen-Variablen können 0x80-0x89 für vordefinierte Texte oder bis zu 12 Zeichen Freitext sein. (längere Texte werden abgeschnitten)

string temp = dom.GetObject("HmIP-RF.0010DA4994786C:1.ACTUAL_TEMPERATURE").Value().ToString(2);
string zeile2 = temp # " Grad";
string icon2  = "";

boolean state = dom.GetObject("HmIP-RF.001E1A498B63F6:1.STATE").Value().ToString(1);
string zeile3 = state;
string icon3 = "";

string temp = dom.GetObject("HmIP-RF.0010D8A990A0AD:1.ACTUAL_TEMPERATURE").Value().ToString(2);
string zeile4 = temp # " Grad";
string icon4  = "";

string signal = "0xF0";

string tonfolge = "0xC0";

! 1 bis 15. 0 = Unendlich
integer wiederholungen = 1;

! es wird zum nächstmöglichen Abstand aufgerundet. Maximum ist 160s.
integer abstand = 10;



!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! System Routine do not change anything below !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

string splitter="|";
string msgBuffer = zeile2 # splitter # icon2 # "\t";
msgBuffer = msgBuffer # zeile3 # splitter # icon3 # "\t";
msgBuffer = msgBuffer # zeile4 # splitter # icon4;

string substitutions = "A,0x41\tB,0x42\tC,0x43\tD,0x44\tE,0x45\tF,0x46\tG,0x47\tH,0x48\tI,0x49\tJ,0x4A\tK,0x4B\tL,0x4C\tM,0x4D\tN,0x4E\tO,0x4F\tP,0x50\tQ,0x51\tR,0x52\tS,0x53\tT,0x54\tU,0x55\tV,0x56\tW,0x57\tX,0x58\tY,0x59\tZ,0x5A";
substitutions = substitutions # "\ta,0x61\tb,0x62\tc,0x63\td,0x64\te,0x65\tf,0x66\tg,0x67\th,0x68\ti,0x69\tj,0x6A\tk,0x6B\tl,0x6C\tm,0x6D\tn,0x6E\to,0x6F\tp,0x70\tq,0x71\tr,0x72\ts,0x73\tt,0x74\tu,0x75\tv,0x76\tw,0x77\tx,0x78\ty,0x79\tz,0x7A";
substitutions = substitutions # "\t0,0x30\t1,0x31\t2,0x32\t3,0x33\t4,0x34\t5,0x35\t6,0x36\t7,0x37\t8,0x38\t9,0x39\t ,0x20\t!,0x21\t\",0x22\t%,0x25\t&,0x26\t=,0x27\t(,0x28\t),0x29\t*,0x2A\t+,0x2B\t,,0x2C\t-,0x2D\t.,0x2E\t/,0x2F";
substitutions = substitutions # "\tÄ,0x5B\tÖ,0x23\tÜ,0x24\tä,0x7B\tö,0x7C\tü,0x7D\tß,0x5F\t:,0x3A\t;,0x3B\t@,0x40\t>,0x3E"; 

string bufferLine;
string substEntry;
integer i;
string char;
string line;
string icon;

string command = "0x02,0x0A";
foreach(bufferLine, msgBuffer) {
	line = bufferLine.StrValueByIndex(splitter, 0);
	icon = bufferLine.StrValueByIndex(splitter, 1);
	if ((line <> "") || (icon <> "")) {
		command = command # ",0x12";
		if ((line.Substr(0,2) == "0x") && (line.Length() == 4)) {
			command = command # "," # line;
			i = 12;
		}
		else {
			i = 0;
		}
		while ((i < line.Length()) && (i < 12)) { 
			char = line.Substr(i, 1);	  
			foreach(substEntry, substitutions){
				if (char == substEntry.Substr(0,1)){command = command # substEntry.Substr(1,5);}
			}
			i = i + 1; 
		}
		if (icon <> "") {
			command = command # ",0x13," # icon;
		}
	}
	command = command # ",0x0A";
}

command = command # ",0x14," # tonfolge # ",0x1C,";

if (wiederholungen < 1){
	command = command # "0xDF,0x1D,";
}
else { 
	if (wiederholungen < 11) {
		command = command # "0xD" # (wiederholungen - 1) # ",0x1D,";
	}
	else {
		if (wiederholungen == 11) {
			command = command # "0xDA,0x1D,";
		}
		else {
			if (wiederholungen == 12) {
				command = command # "0xDB,0x1D,";
			}
			else {
				if (wiederholungen == 13) {
					command = command # "0xDC,0x1D,";
				}
				else {
					if (wiederholungen == 14) {
						command = command # "0xDD,0x1D,";
					}
					else {
						command = command # "0xDE,0x1D,";
					}
				}
			}
		}
	}
}


if (abstand <= 10) {
	command = command # "0xE0,0x16,";
}
else {
	if (abstand <= 100) {
		command = command # "0xE" # (abstand - 1 / 10) # ",0x16,";
	}
	else {
		if (abstand <= 110) {
			command = command # "0xEA,0x16,";
		}
		else {
			if (abstand <= 120) {
				command = command # "0xEB,0x16,";
			}
			else {
				if (abstand <= 130) {
					command = command # "0xEC,0x16,";
				}
				else {
					if (abstand <= 140) {
						command = command # "0xED,0x16,";
					}
					else {
						if (abstand <= 150) {
							command = command # "0xEE,0x16,";
						}
						else {
							command = command # "0xEF,0x16,";
						}
					}
				}
			}
		}
	}
}


command = command # signal # ",0x03"; 

dom.GetObject("BidCos-RF." # seriennummer # ":3.SUBMIT").State(command);/code]
 

[attachment=0]Bildschirmfoto 2021-11-23 um 10.02.43.png[/attachment]

[attachment=1]IMG_7340.JPG[/attachment]
Dateianhänge
Bildschirmfoto 2021-11-23 um 10.02.43.png
IMG_7340.JPG

hel400
Beiträge: 121
Registriert: 12.10.2016, 13:17
Hat sich bedankt: 9 Mal
Danksagung erhalten: 8 Mal

Re: HM-Dis-EP-WM55 Status von HmIP-SCI als Text darstellen

Beitrag von hel400 » 23.11.2021, 12:19

ok, ICH WEISS dass es hier um ein anderes Thema geht und neunmalklug daherreden ist normalerweise ganz sicher auch NICHT mein's,
ABER ich kann nicht anders - tut leid.

Was als ERSTES gemacht gehört: Hund UND HERRCHEN gehören schleunigst in eine ordentliche Hundeschule, weil wenn ich lese, was da alles abgeht (.. wenn irrtümlicherweise die Tore offen sind dann ist der Hund schon auf der Straße und legt sich mit zufällig(!) Vorbeigehenden an...), dann geht's bei mir durch.

PS: Wir haben 3 (DREI) Hunde, bin also KEIN Hundefeind sondern das Gegenteil.
So, vielen Dank und nun zurück zum eigentlichen Thema!

MichaelN
Beiträge: 9679
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: HM-Dis-EP-WM55 Status von HmIP-SCI als Text darstellen

Beitrag von MichaelN » 23.11.2021, 12:22

Vorweg: das WM55 kenne ich nciht, ich habe das WRCD.

1) musst Du halt eine If-Bedingung einfügen:

Code: Alles auswählen

boolean state = dom.GetObject("HmIP-RF.001E1A498B63F6:1.STATE").Value();
string zeile3;
if ( state) {
	zeile3 = "Tor auf" ;
	string icon3 = "0x82";
} else {
	zeile3 = "Tor zu" ;
	string icon3 = "0x83";
} 
Mit den Icons musst du mal sehen, ob das so geht.

Btw: Was für ein krasser Code. Da wird eine Variable als Boolean definiert um ihr dann eine Zahl Zu übergeben, die zum String konvertiert wird. Geil. Ein Hoch auf die automatische Typkonvertierung.

2) keine Ahnung, ob es auch beim WM55 so geht. Beim WRCD wird das ^ als ° dargestellt.
Du müsstest also schreiben:

Code: Alles auswählen

string zeile2 = temp # " ^C";
Dummerweise hat die WebUI einen Bug, der die Speicherung von ^ verhindert. Wie man das umgehen kann ist hier beschrieben:
viewtopic.php?f=60&t=55269&p=686744&hilit=Wrcd#p684299

3) Ich weiß nicht, ob ich Dich da richtig verstehe. Du meinst die Darstellung in der Bearbeitungen Ansicht des Programms. Wo steht Skript... Sofort
Du kannst den Start des Skript mit beliebigen weiteren Kommentaren, die mit ! Eingeleitet werden, ergänzen
Es ist aber guter Stil den (c) Vermerk des original Autors nicht zu löschen. Außerdem hilft Dir das, wenn Du mangels Backup in 3 Jahren das Skript wieder suchst...
Zuletzt geändert von MichaelN am 23.11.2021, 13:32, insgesamt 2-mal geändert.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Tyfys
Beiträge: 551
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 125 Mal

Re: HM-Dis-EP-WM55 Status von HmIP-SCI als Text darstellen

Beitrag von Tyfys » 23.11.2021, 13:14

MichaelN hat geschrieben:
23.11.2021, 12:22
1) musst Du halt eine If-Bedingung einfügen:

Code: Alles auswählen

boolean state = dom.GetObject("HmIP-RF.001E1A498B63F6:1.STATE").Value();
string zeile3;
If ( state) {
	zeile3 = "Tor auf" ;
} else {
	zeile3 = "Tor zu" ;
} 
string icon3 = "";
Allerdings muss If in Kleinbuchstaben > if
Gruß
Harry

MichaelN
Beiträge: 9679
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: HM-Dis-EP-WM55 Status von HmIP-SCI als Text darstellen

Beitrag von MichaelN » 23.11.2021, 13:30

Habe ich übersehen. Meine Handy Tastatur hat halt ihr Eigenleben. :evil:
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

EifelPaule
Beiträge: 10
Registriert: 21.11.2021, 00:29
System: CCU
Hat sich bedankt: 11 Mal

Re: HM-Dis-EP-WM55 Status von HmIP-SCI als Text darstellen

Beitrag von EifelPaule » 23.11.2021, 13:53

Hallo MichaelN,
hallo Tyfys,

vielen Dank für die schnelle Hilfe.

zu1)
IF hatte ich versucht nur noch nicht geantwortet dass es nicht geht.

Dank Tyfys Info if zu nehmen läuft es. Cooooooool - Danke.

zu2)
Darstellung von ° statt Grad geht nicht, seltsamerweise änder ich das Script
probiere es aus und dann steht wieder " Grad " dort ..... wunder ......

zu3)
Ich will ja gar nicht die Urheberrechte verstecken oder rausschmeissen.
Soll gern stehen bleiben.

Bildschirmfoto 2021-11-23 um 10.02.43.png

Dort wo der gelbe Rahmen steht soll allerdings als erstes " Script Einfahrtstor " stehen
und nur das.

Im Script selber soll DrTob erhalten bleiben.

VG,
Thomas

MichaelN
Beiträge: 9679
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: HM-Dis-EP-WM55 Status von HmIP-SCI als Text darstellen

Beitrag von MichaelN » 23.11.2021, 13:57

hast du gelesen, was ich geschrieben habe?
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Tyfys
Beiträge: 551
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 125 Mal

Re: HM-Dis-EP-WM55 Status von HmIP-SCI als Text darstellen

Beitrag von Tyfys » 23.11.2021, 14:07

Einfach das gewünschte eine Zeile vor Dr. Tob einfügen

z.B. so:

Code: Alles auswählen

!! Script Einfahrtstor  ******************************************
!! Universalprogramm zum Füllen des HM-Disp-EP-WM55
!! (c) DrTob
!! Version 1.01
....
....
Gruß
Harry

EifelPaule
Beiträge: 10
Registriert: 21.11.2021, 00:29
System: CCU
Hat sich bedankt: 11 Mal

Re: HM-Dis-EP-WM55 Status von HmIP-SCI als Text darstellen

Beitrag von EifelPaule » 23.11.2021, 14:09

Hey MichaelN,
Du meinst zu 3 ......
ja, habe ich 😊 Oberstes Gebot in einem Forum erst mal lesen ......

Den Text kann ich ändern aber welches Zeichen muss dahinter damit er
dann nicht alles aus den nächsten Zeilen noch dahin schreibt?

Guckst Du bitte:
Bildschirmfoto 2021-11-23 um 14.06.36.png
Oder war Dein Kommentar zu dem Grad Zeichen ....

VG, Thomas

MichaelN
Beiträge: 9679
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: HM-Dis-EP-WM55 Status von HmIP-SCI als Text darstellen

Beitrag von MichaelN » 23.11.2021, 14:15

EifelPaule hat geschrieben:
23.11.2021, 14:09
Aber welches Zeichen muss dahinter
Leerzeichen? - oder = oder + oder *? Was auch immer IDr gefällt. Die WebUI zeigt einfach soviel an,wie ins Feld rein passt. Das musst Du dann halt auffüllen...
EifelPaule hat geschrieben:
23.11.2021, 14:09
Oder war Dein Kommentar zu dem Grad Zeichen ....
Auch. Ich habe doch geschrieben, daß Skripte mit ^ nicht gespeichert werden. (Okay, habe ich nciht. Zumindest nicht genau SO. Mal wieder zu ungenau kommuniziert)
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Antworten

Zurück zu „HomeMatic Aktoren und Sensoren (klassisch)“