HomeMatic Statusanzeige HM-Dis-WM55

Kabellose und kabelgebundene Sender und Empfänger der Serie Homematic "classic"

Moderator: Co-Administratoren

Sebastian29
Beiträge: 5
Registriert: 28.02.2019, 21:42

Re: HomeMatic Statusanzeige HM-Dis-WM55

Beitrag von Sebastian29 » 05.03.2019, 19:33

Hallo zusammen,

vielen Dank für eure Rückmeldung.

Ich habe das vorgefertigte Script erstmal so übernommen.

Das Display zeigt an was es soll.

Meine Frage:

Ich möchte gerne den Zustand anzeigen lassen wie viele Fenster offen sind, wie erstelle ich den Bezug zu den Fensterkontakten?
Wie kann ich mir anzeigen lassen welche Fenster offen sind?

alchy
Beiträge: 8710
Registriert: 24.02.2011, 01:34
Hat sich bedankt: 6 Mal
Danksagung erhalten: 68 Mal

Re: HomeMatic Statusanzeige HM-Dis-WM55

Beitrag von alchy » 06.03.2019, 09:16

Du ermittelst die offenen Fenster mittels Script speicherst das Ergebnis in einer Systemvariablen und zeigst den Inhalt der Systemvariablen dann auf dem Display an.

Alchy

...................
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Sebastian29
Beiträge: 5
Registriert: 28.02.2019, 21:42

Re: HomeMatic Statusanzeige HM-Dis-WM55

Beitrag von Sebastian29 » 08.03.2019, 21:40

Hallo Alchy,


hast Du hierfür zufällig ein Beispiel?

Bin leider wirklich nicht fit im programmieren....


Desweiteren würde ich ja gerne den Zustand der Alarmanlage abfragen und auf dem Display darstellen. Ich habe eine Werteliste mit Intern Scharf, Extern scharf, usw....

Ich kann mir ja auch immer nur einen Zustand anzeigen lassen und würde mit if ..... else if verknüpfen, bin mir aber auch da unsicher ob es richtig ist, evtl, kann man nur den akutellen zustand jeweils auslesen?

So hätte ich mir das gedacht, funktioniert aber leider nicht :(

var oSysvar = dom.GetObject("Alarmanlage");
if (oSysvar.State()== Intern scharf){

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Intern Scharf:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "aktivr";
color4="0x85";
icon4 = "";
zeile5 = "einge-";
color5 = "0x81";
icon5 = "";
zeile6 = "schaltet";
color6 = "0x81";
icon6 = "";
}
else

alchy
Beiträge: 8710
Registriert: 24.02.2011, 01:34
Hat sich bedankt: 6 Mal
Danksagung erhalten: 68 Mal

Re: HomeMatic Statusanzeige HM-Dis-WM55

Beitrag von alchy » 08.03.2019, 21:55

Sebastian29 hat geschrieben:
08.03.2019, 21:40
hast Du hierfür zufällig ein Beispiel?
Klar jede Menge, und da selber suchen wohl nicht das Mittel der Wahl ist:
>> Anzahl offene Fenster <<
Sebastian29 hat geschrieben:
08.03.2019, 21:40
Ich kann mir ja auch immer nur einen Zustand anzeigen lassen
Naja, alles was du sagst.
Nehmen wir mal an du hast eine Systemvariable Typ Werteliste mit Namen "Alarmanlage"

Code: Alles auswählen

string sysvar = "Alarmanlage";
WriteLine( (dom.GetObject(ID_SYSTEM_VARIABLES).Get(sysvar).ValueList() ).StrValueByIndex(";",dom.GetObject(ID_SYSTEM_VARIABLES).Get(sysvar).Value()) );
Dann wird dir der aktuelle Wert der Systemvariablen damit ^^ angezeigt.

Alchy

...................
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Sebastian29
Beiträge: 5
Registriert: 28.02.2019, 21:42

Re: HomeMatic Statusanzeige HM-Dis-WM55

Beitrag von Sebastian29 » 08.03.2019, 22:10

Vielen Dank für deine Rückmeldung!


Bzgl. der Alarmanlage, was muss ich noch eingeben damit die Variablen aus der Werteliste auf dem Display angezeigt werden?

Muss ich die variable gleichsetzen if Arlamanlage == Intern Scharf ??

Oder bin ich da voll falsch?...

Sebastian29
Beiträge: 5
Registriert: 28.02.2019, 21:42

Re: HomeMatic Statusanzeige HM-Dis-WM55

Beitrag von Sebastian29 » 08.03.2019, 23:02

Also ich habe es noch etwas probiert.... er springt aber immer in die else schleife und zeigt unbekannt an....

! ### Übersicht ####

zeile1 = "Übersicht3:";
color1 = "0x80";
icon1 = "";

string sysvar = "Alarmanlage";
WriteLine( (dom.GetObject(ID_SYSTEM_VARIABLES).Get(sysvar).ValueList() ).StrValueByIndex(";",dom.GetObject(ID_SYSTEM_VARIABLES).Get(sysvar).Value()) );
if ((ID_SYSTEM_VARIABLES) == 0) {
zeile4 = "Unscharf";
color4 = "0x81";
icon4 = "";
zeile5 = "offen";
color5 = "0x81";
icon5 = "";
}
else {
zeile4 = "Unbekannt";
color4 = "0x84";
icon4 = "";
}
}

casametti
Beiträge: 204
Registriert: 24.03.2013, 14:20
Wohnort: Weilburg

Re: HomeMatic Statusanzeige HM-Dis-WM55

Beitrag von casametti » 28.07.2019, 21:33

Muss ich für mich das Thema nochmal "ausgraben"......

Mein Displaytaster zeigt seit kurzem an "Keine Daten empfangen"....ich hatte 4 Skripte laufen......habe nichts an denen geändert......waren für Programme.......Taste oben kurz, Taste oben lang, Taste unten kurz, Taste unten lang.....

nicht eins mehr funktioniert.....kann mir nicht erklären wieso....

hab den Displaytaster schon auf Werkseinstellung zurückgesetzt, neu angelernt und wieder als "Wenn" Bedingung gesetzt....das gleiche.... hab ein neues Programm angelegt und den Skript kopiert .....nichts.....

anbei einen der skripte der mir die Außentemperatur und Luftfeuchte der Wetterstation anzeigt-----vllt. kann das ja mal einer mit seiner Wetterstation testen......

Liebe Grüße Torsten

Code: Alles auswählen

! ### Homatic-Statusanzeige HM-Dis-WM55 ####
! ### Stausanzeige 2 , Vers. 1.0;
! ### Anzeige der Zysternen Füllstand, Zysternen Filter stand, Außentemperatur, Status der Türen, Fenster und Lichter

!! Universalprogramm zum Füllen 
!! (c) DrTob 
!! optimized by thkl
!! changed by wortmann30

!! Das Script holt sich jetzt die Seriennummer des Displays selbst aus der Auslösebedinung des Programms

! Farben
! 0x80 weiß
! 0x81 rot
! 0x82 orange
! 0x83 gelb
! 0x84 gruen
! 0x85 blau 

! Symbole 
! 0x80 AUS
! 0x81 EIN
! 0x82 OFFEN
! 0x83 geschlossen
! 0x84 fehler
! 0x85 alles ok
! 0x86 information
! 0x87 neue nachricht
! 0x88 servicemeldung
! 0x89 Signal grün
! 0x8A Signal gelb
! 0x8B Signal rot

! Zugriff auf vordefinierte Texte
!
! 0x80 Text 0 (Kanal 1 Text Zeile 1)
! 0x81 Text 1 (Kanal 1 Text Zeile 2)
! 0x82 Text 2 (Kanal 2 Text Zeile 3)
! 0x83 Text 3 (Kanal 2 Text Zeile 4)
! 0x84 Text 4 (Kanal 3 Text Zeile 5)
! 0x85 Text 5 (Kanal 3 Text Zeile 6)
! 0x86 Text 6 (Kanal 4 Text Zeile 7)
! 0x87 Text 7 (Kanal 4 Text Zeile 8)
! 0x88 Text 8 (Kanal 5 Text Zeile 9)
! 0x89 Text 9 (Kanal 5 Text Zeile 10)
! 0x8A Text 10 (Kanal 6 Text Zeile 11)
! 0x8B Text 11 (Kanal 6 Text Zeile 12)
! 0x8C Text 12 (Kanal 7 Text Zeile 13)
! 0x8D Text 13 (Kanal 7 Text Zeile 14)
! 0x8E Text 14 (Kanal 8 Text Zeile 15)
! 0x8F Text 15 (Kanal 8 Text Zeile 16)
! 0x90 Text 16 (Kanal 9 Text Zeile 17)
! 0x91 Text 17 (Kanal 9 Text Zeile 18)
! 0x92 Text 18 (Kanal 10 Text Zeile 19)
! 0x93 Text 19 (Kanal 10 Text Zeile 20)

string zeile1 = "Zeile 1";
string color1 = "0x80";
string icon1 = "";

string zeile2 = "Zeile 2";
string color2 = "0x80";
string icon2 = "";

string zeile3 = "Zeile 3";
string color3 = "0x80";
string icon3 = "";

string zeile4 = "Zeile 4";
string color4 = "0x80";
string icon4 = "";

string zeile5 = "Zeile 5";
string color5 = "0x80";
string icon5 = "";

string zeile6 = "Zeile 6";
string color6 = "0x80";
string icon6 = "";

! --------- Anfang Ermitteln der Systemzustände und Zuweisung zu den einzelnen Zeilen -------------


zeile1 = "Außentemp.";
color1 = "0x85";
icon1 = "";

var serialnumber="JEQ0157531";
var channel=dom.GetObject("BidCos-RF."#serialnumber#":1.TEMPERATURE");
var id = channel.Value();
var channel2=dom.GetObject("BidCos-RF."#serialnumber#":1.HUMIDITY");
var id2 = channel2.Value();
var color2 = "0x85";  

string zeile2 = ""#id.ToString(1)#"°C "#id2.ToString(1)#"%" ;

if (id >= 12.0) {string color2 = "0x83";}
if (id >= 19.0) {string color2 = "0x82";}
if (id >= 27.9) {string color2 = "0x81";}
string icon2 = "";

if (id >= 12.0) {string color1 = "0x83";}
if (id >= 19.0) {string color1 = "0x82";}
if (id >= 28.0) {string color1 = "0x81";}
string icon1= "";

zeile3= "----------------------------------";
color3 = "0x80";
icon3 = "";

zeile4= "Automower";
color4 = "0x84";
icon4 = "";

zeile5 = "Sperrzone";
color5 = "0x84";
icon5 = "";

zeile6 = "ausgeschaltet";
color6 = "0x84";
icon6 = "";


! --------- Ende Ermitteln der Systemzustände und Zuweisung zu den einzelnen Zeilen -------------


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

string splitter="|";
string msgBuffer = zeile1 # splitter # color1 # splitter # icon1 # "\\\\	";
msgBuffer = msgBuffer # zeile2 # splitter # color2 # splitter # icon2 # "\\\\	";
msgBuffer = msgBuffer # zeile3 # splitter # color3 # splitter # icon3 # "\\\\	";
msgBuffer = msgBuffer # zeile4 # splitter # color4 # splitter # icon4 # "\\\\	";
msgBuffer = msgBuffer # zeile5 # splitter # color5 # splitter # icon5 # "\\\\	";
msgBuffer = msgBuffer # zeile6 # splitter # color6 # splitter # icon6;

string substitutions = "A,0x41\\\\	B,0x42\\\\	C,0x43\\\\	D,0x44\\\\	E,0x45\\\\	F,0x46\\\\	G,0x47\\\\	H,0x48\\\\	I,0x49\\\\	J,0x4A\\\\	K,0x4B\\\\	L,0x4C\\\\	M,0x4D\\\\	N,0x4E\\\\	O,0x4F\\\\	P,0x50\\\\	Q,0x51\\\\	R,0x52\\\\	S,0x53\\\\	T,0x54\\\\	U,0x55\\\\	V,0x56\\\\	W,0x57\\\\	X,0x58\\\\	Y,0x59\\\\	Z,0x5A";
substitutions = substitutions # "\\\\	a,0x61\\\\	b,0x62\\\\	c,0x63\\\\	d,0x64\\\\	e,0x65\\\\	f,0x66\\\\	g,0x67\\\\	h,0x68\\\\	i,0x69\\\\	j,0x6A\\\\	k,0x6B\\\\	l,0x6C\\\\	m,0x6D\\\\	n,0x6E\\\\	o,0x6F\\\\	p,0x70\\\\	q,0x71\\\\	r,0x72\\\\	s,0x73\\\\	t,0x74\\\\	u,0x75\\\\	v,0x76\\\\	w,0x77\\\\	x,0x78\\\\	y,0x79\\\\	z,0x7A";
substitutions = substitutions # "\\\\	0,0x30\\\\	1,0x31\\\\	2,0x32\\\\	3,0x33\\\\	4,0x34\\\\	5,0x35\\\\	6,0x36\\\\	7,0x37\\\\	8,0x38\\\\	9,0x39\\\\	 ,0x20\\\\	!,0x21\\\\	\\\\\\\\",0x22\\\\	%,0x25\\\\	&,0x26\\\\	=,0x27\\\\	(,0x28\\\\	),0x29\\\\	*,0x2A\\\\	+,0x2B\\\\	,,0x2C\\\\	-,0x2D\\\\	.,0x2E\\\\	/,0x2F";
substitutions = substitutions # "\\\\	Ä,0x5B\\\\	Ö,0x23\\\\	Ü,0x24\\\\	ä,0x7B\\\\	ö,0x7C\\\\	ü,0x7D\\\\	ß,0x5F\\\\	:,0x3A\\\\	;,0x3B\\\\	@,0x40\\\\	>,0x3E"; 

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

string command = "0x02";
foreach(bufferLine, msgBuffer) {
   line = bufferLine.StrValueByIndex(splitter, 0);
   icon = bufferLine.StrValueByIndex(splitter, 2);
   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; 
      }
      command = command # ",0x11," # bufferLine.StrValueByIndex(splitter, 1);
      if (icon <> "") {
         command = command # ",0x13," # icon;
      }
   }
   command = command # ",0x0A";
}
command = command # ",0x03";

dom.GetObject("BidCos-RF." # dom.GetObject("$src$").Name().StrValueByIndex(".",1) # ".SUBMIT").State(command);

! ##### FERTIG #####
Zuletzt geändert von alchy am 28.07.2019, 21:51, insgesamt 1-mal geändert.
Grund: Code in Codetags posten

Antworten

Zurück zu „HomeMatic Aktoren und Sensoren“