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

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, 20:32

Hallo Baxxy

Klasse Idee von dir:

Code: Alles auswählen

string state = "Tor: "# dom.GetObject("HmIP-RF.001E1A498B63F6:1.STATE").Value().ToInteger().ToString().Replace("0", "zu").Replace("1", "offen");
bringt mich auf auf eine Lösung, wo ich dachte geht nicht :

Code: Alles auswählen

string state ="Tor: " # ("zu;offen").StrValueByIndex(";", dom.GetObject("HmIP-RF.001E1A498B63F6:1.STATE").Value().ToInteger());
WriteLine(state);
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, 20:37

Eine Lösung eleganter als die andere. Obwohl ich es ja lieber Schritt für Schritt machen, macht das debugging einfacher.
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 +++

Benutzeravatar
Baxxy
Beiträge: 10836
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 608 Mal
Danksagung erhalten: 2228 Mal

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

Beitrag von Baxxy » 23.11.2021, 20:40

MichaelN hat geschrieben:
23.11.2021, 20:37
Schritt für Schritt
Deine Lösung war auch sehr gut. Hatte ich beim testen genutzt um gleich noch das korrekte Symbol (AUF/ZU) mit anzeigen zu lassen. :)

Grüße, Baxxy

Benutzeravatar
Baxxy
Beiträge: 10836
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 608 Mal
Danksagung erhalten: 2228 Mal

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

Beitrag von Baxxy » 23.11.2021, 21:51

So sieht das hier aktuell aus. :)
HM-EPaper-Test.jpg
Grüße, Baxxy

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, 22:14

Baxxy hat geschrieben:
23.11.2021, 20:40
um gleich noch das korrekte Symbol (AUF/ZU) mit anzeigen zu lassen
Das bekommt man bestimmt auch noch mit StrValueByIndex hin...
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 » 24.11.2021, 18:42

Hallo Baxxy,

vielen Dank - alles ausprobiert und funktioniert!

Wo hast Du aber wie das Icon für das auf und zu noch integriert ...... ?

Mein Script sieht jetzt so aus:

Code: Alles auswählen

!! Skript Einfahrtstor                                                                     




!! 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(1).Replace(".", ",");
string zeile2 = temp # " °C";
string icon2  = "";

string state = "Tor: "# dom.GetObject("HmIP-RF.001E1A498B63F6:1.STATE").Value().ToInteger().ToString().Replace("0", "zu").Replace("1", "offen");



string temp = dom.GetObject("HmIP-RF.0010D8A990A0AD:1.ACTUAL_TEMPERATURE").Value().ToString(1).Replace(".", ",");
string zeile4 = temp # " °C";
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\t°,0x5e";


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);



Vielleicht hast Du noch Lust mir da noch weiter zu helfen ...... :shock:

Wäre toll und vielen vielen Dank!

Habe eben direkt das zweite Display für oben bestellt :P

Schönen Abend und VG, Thomas

Benutzeravatar
Baxxy
Beiträge: 10836
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 608 Mal
Danksagung erhalten: 2228 Mal

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

Beitrag von Baxxy » 24.11.2021, 19:21

EifelPaule hat geschrieben:
24.11.2021, 18:42
mir da noch weiter zu helfen ......
Ich hab's ja hier schon fertig, kein Problem.

Du kannst testweise alle Scriptzeilen für die 3 Display-Zeilen durch folgende ersetzen. Relevant ist zwar nur alles für die mittlere Displayzeile, den Rest habe ich aber noch etwas gekürzt/geändert um wieder näher am DrTob - Originalscript zu sein.

Code: Alles auswählen

string zeile2 = dom.GetObject("HmIP-RF.0010DA4994786C:1.ACTUAL_TEMPERATURE").Value().ToString(1).Replace(".", ",") #" °C";
string icon2  = "";

integer status = dom.GetObject("HmIP-RF.001E1A498B63F6:1.STATE").Value().ToInteger();
string icon3 = "0x83"; string statustext = "zu";
if ( status ) { icon3 = "0x82"; statustext = "offen"; }
string zeile3 = "Tor: "# statustext;

string zeile4 = dom.GetObject("HmIP-RF.0010D8A990A0AD:1.ACTUAL_TEMPERATURE").Value().ToString(1).Replace(".", ",") #" °C";
string icon4  = "";


Grüße, Baxxy

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 » 24.11.2021, 20:17

Dankeschön ......

Bildschirmfoto 2021-11-24 um 20.14.33.png


es funktioniert so wie ich das wollte.


IMG_7367.JPG


Vielen, vielen Dank für Deine Bemühungen.

Schönen Abend noch und VG, Thomas

Blackfire001
Beiträge: 1
Registriert: 30.11.2021, 16:26
System: CCU und Access Point

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

Beitrag von Blackfire001 » 30.11.2021, 16:39

Hallo,
kann mir jemand helfen? ich wollte die Display Status LED verschieden Farbig blinken lassen je nach Füllstand. leider bekome ich bei dem Script immer eine Fehlermeldung. (Error 1 at row 214 col 2 near ^^). Ich weis nicht wo der Fehler liegt.

var max = 5340.70 ;
var istlevel = dom.GetObject("BidCos-RF.QEQ1647356:1.FILLING_LEVEL").Value() ;
var hilfe = max / 100.00 ;
var liter = hilfe * istlevel ;


string zeile2 = "Niveau";
string icon2 = "0x86";

string zeile3 = istlevel.ToString (0) # " %";
string icon3 = "";

string zeile4 = liter.ToString (1) # " Liter";
string icon4 = "";

string signal = "0xF2";

if (liter < 1500) {
string signal = "0xF1";
}
else{
if (liter < 3000){
string signal = "0xF3";
}

string tonfolge = "0xC0";

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

Benutzeravatar
Baxxy
Beiträge: 10836
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 608 Mal
Danksagung erhalten: 2228 Mal

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

Beitrag von Baxxy » 30.11.2021, 17:52

Blackfire001 hat geschrieben:
30.11.2021, 16:39
Ich weis nicht wo der Fehler liegt.
Bitte Codes in Codetags (</> - Symbol) posten.
Kleiner Tipp: es fehlt nur eine schließende geschweifte Klammer.

Grüße, Baxxy

Antworten

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