HmIP-WRCD - Textzeile per Skript setzen

HMIP lokale Installation

Moderator: Co-Administratoren

MichaelN
Beiträge: 1166
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 81 Mal
Danksagung erhalten: 114 Mal

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von MichaelN » 18.05.2020, 19:08

Stefan0815 hat geschrieben:
18.05.2020, 10:53
Außerdem funktioniert die Aktualisierung einer einzelnen Zeile nicht zuverlässig. Also immer den gesamten Inhalt senden.
Das kann ich jetzt nicht bestätigen. Ich habe den ganzen Tag diverse Tests gemacht und dabei immer mit COMBINED_PARAMETER nur 1 oder 2 Zeilen geändert. Das hat jedesmal funktioniert.

Die schönen Trennlinien kann man sich anscheinend nicht per Skript anzeigen lassen, das ist schade. Wenn jemand noch eine Lösung findet, immer heraus damit!

MichaelN
Beiträge: 1166
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 81 Mal
Danksagung erhalten: 114 Mal

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von MichaelN » 18.05.2020, 19:32

Anbei mal das Ergebnis der heutigen Bastelei, vielleicht kann es ja mal jemand als Anregung gebrauchen.
Ich nutze das Display mehr als beschrifteten Mehrfachschalter, denn als Statusdisplay.
Das Display zeigt in der obersten und untersten Zeile die aktuelle Funktion des Tasters an.
In der Mitte lasse ich den Status von 2 Systemvariablen anzeigen und die Zeile 4 nutze ich zum Anzeigen von Warnmeldungen.

Es werden diverse Systemvariablen benötigt:
DisplaySeite als Zahl mit Wertebereich 0-10 - diese speichert welche Seite gerade angezeigt wird (max. Bereich ggf. anpassen, aber mehr als 10 Seiten würde ich mit Rücksicht auf den DutyCycle und die Bedienbarkeit auf keinen Fall machen)
DisplayWarnung als Zeichenkette - wird diese Variable in irgendeinem Programm gesetzt, erscheint sie in Zeile 4
DisplayPiep als Logikwert - bei WAHR piept das Display bei einer neuen Warnmeldung (kann man z.B. nutzen um das Piepen zeitgesteuert abzuschalten)
Desweiteren greife ich auf eine SV "Duty Cycle" zurück, um das System nicht durch rumspielen am Taster lahm zu legen. Den Abschnitt kann man aber auch einfach aus dem Skript schmeißen, wenn man kein DC-Variable hat.
Das gleiche gilt für "meine" SV "Protokolleintrag" (Typ Zeichenkette), welches einfach eine protokollierte Variable ist, die damit autoamtisch im Systemprotokoll erscheint. Braucht man das nicht oder hat eine anders benannte SV, dann einfach im Skript/Programm ändern.

Die Logik besteht aus 3 Programmen. Zunächst braucht man ein Programm "Display_Skip", das für den kurzen Tastendruck zuständig ist und die Zeilen 1 und 5 mit der neuen Tastenfunktion beschreibt:
Unbenannt.jpg

Code: Alles auswählen

! Display Seite weiter schalten V1

string Geraet = "Displayname:3"; ! Name von Kanal 3 des Displays
integer max = 5; ! max. Anzahl Seiten
string zeile1;
string zeile5;

var DC = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Duty Cycle").State(); ! SV Duty Cyle (Zahl) muss existieren
! Skript abbrechen, wenn Duty Cycle kritische Schwelle (ggf. anpassen) ueberschritten hat um Funktion des restlichen Systems sicherzustellen
if ( DC > 80 )
   {
	dom.GetObject(ID_SYSTEM_VARIABLES).Get("Protokolleintrag").State("DisplaySkip: Abbruch wg. Duty Cycle Schutz!");
	quit;
   }

! wenn Warnmeldung ansteht, dann Zusatzseite zum resetten anzeigen
string DisplayWarnung = dom.GetObject(ID_SYSTEM_VARIABLES).Get("DisplayWarnung").State(); ! SV DisplayWarnung (String) muss existieren
if ( DisplayWarnung != "" )
	{ max = max + 1;}

integer aktuelleSeite = dom.GetObject(ID_SYSTEM_VARIABLES).Get("DisplaySeite").State(); ! SV DisplaySeite (Zahl) muss existieren

! Auslöserbutton holen
! taster = 2 --> oberer taster, taster = 1 --> unterer taster
string sender = dom.GetObject("$src$").Name();
integer taster = sender.StrValueByIndex(":",1).StrValueByIndex(".",0).ToInteger();

! abhängig von aktuelleSeite und Auslöser die Displayseite anpassen
 if (taster == 2){ ! oberer Button (hier: nächste Seite)
    aktuelleSeite = aktuelleSeite + 1;
  }
  else { ! unterer Button (hier: vorherige Seite)
    aktuelleSeite = aktuelleSeite - 1;
  }

  if (aktuelleSeite > max){
    aktuelleSeite = 1;
  }
  if (aktuelleSeite < 1){
    aktuelleSeite = max;
  }

dom.GetObject(ID_SYSTEM_VARIABLES).Get("DisplaySeite").State(aktuelleSeite); ! in CCU sichern

! Display aktualisieren

! === SEITE 1 ===
if ( aktuelleSeite == 1 )
{
	zeile1 = "=Rollos auf=";
	zeile5 = "<Rollos ab<";
}

! === SEITE 2 ===
if ( aktuelleSeite == 2 )
{
	zeile1 = "=Rollos auf=";
	zeile5 = "@[email protected]";
}

! === SEITE 3 ===
if ( aktuelleSeite == 3 )
{
	zeile1 = "''Rollo auto''";
	zeile5 = "'''manuell'''";
}

! === SEITE 4 ===
if ( aktuelleSeite == 4 )
{
	zeile1 = "''Flur auto''";
	zeile5 = "'Flur manuell'";
}

! === SEITE 5 ===
if ( aktuelleSeite == 5 )
{
	zeile1 = "'''Flur ein'''";
	zeile5 = "'''Flur aus'''";
}

! === SEITE 6 - EXTRA-SEITE ===
if ( aktuelleSeite == 6 )
{
	zeile1 = "'Warnung aus'";
	zeile5 = "'Warnung aus'";
}

string DisplayInhaltNeu = "{DDBC=WHITE,DDTC=BLACK,DDI=0,DDA=CENTER,DDS="#zeile1#",DDID=1},{DDBC=WHITE,DDTC=BLACK,DDI=0,DDA=CENTER,DDS="#zeile5#",DDID=5,DDC=true}";

! neuen Inhalt setzen
channels.Get(Geraet).DPByHssDP("COMBINED_PARAMETER").State(DisplayInhaltNeu);
Bei einem langen Tastendruck wird das Programm "Display_Action" getriggert, das die entsprechenden Funktionen auslöst - ganz ohne Skripte!
Screenshot_2020-05-18 Screenshot.png
Das Programm "Display_Warn" wird durch Änderungen an der SV DisplayWarnung getriggert:
Unbenannt2.JPG

Code: Alles auswählen

! Zeile 4 im Statusdisplay setzen V2
string Geraet = "Displayname:3"; ! Name von Kanal 3 des Displays
string zeile4 = dom.GetObject(ID_SYSTEM_VARIABLES).Get("DisplayWarnung").State();
string DisplayInhaltNeu;
boolean Piep = dom.GetObject(ID_SYSTEM_VARIABLES).Get("DisplayPiep").State();

if  ( zeile4 != "" )
	{
	if ( Piep ) {
	         ! mit Piep
	         DisplayInhaltNeu = "{R=1,IN=5,ANS=6},{DDBC=BLACK,DDTC=WHITE,DDI=0,DDA=CENTER,DDS="#zeile4#",DDID=4,DDC=true}";
	         } else {
	         ! ohne Piep
	         DisplayInhaltNeu = "{DDBC=BLACK,DDTC=WHITE,DDI=0,DDA=CENTER,DDS="#zeile4#",DDID=4,DDC=true}";
	         }
	} else {
	DisplayInhaltNeu = "{DDBC=WHITE,DDTC=BLACK,DDI=0,DDA=CENTER,DDS="#zeile4#",DDID=4,DDC=true}";
	}


! neuen Inhalt setzen
channels.Get(Geraet).DPByHssDP("COMBINED_PARAMETER").State(DisplayInhaltNeu);
Wichtig! Um ein mehrfaches Auslösen der Programme bei langem Tastendruck zu verhindern, müssen der Timeout in den Einstellungen des Displays folgendermaßen gesetzt werden:
WichtigUnbenannt.JPG
Zuletzt geändert von MichaelN am 29.06.2020, 20:25, insgesamt 2-mal geändert.

Aquaplex
Beiträge: 19
Registriert: 16.11.2011, 18:16
Danksagung erhalten: 1 Mal

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von Aquaplex » 20.05.2020, 14:46

Black hat geschrieben:
11.05.2020, 21:01
solange wie der WebUI-Editor diesen bug hat hilft als einfache Lösung nur ein Bugfix.

Ansosnten gibt es nur die 2 grossen Zusatzprogramme, wo der Editor nur ein teil dessen ist. Das Problem ist ja, du musst einen Text richtig kodiert in das richtige SingledestinationsObjekt der Rega bekommen. Das rein händisch zu machen ist schwierig.

Mit dem SDV wäre die recht einfache Vorgehensweise:

du wählst das programm aus:

in der einfachsten Form der Dasrtellung siehts du dann schon, ob und welche Scripte das programm enthält.
dieses klickst dann an und kannst es im editor bearbeiten.
Wenn fertig getestet hast kannst du dieses durch die Hochladen taste wieder in die CCU laden.

Ist eigentlich nicht soooooo das riesen hexenwerk...

Black
Wenn ich die Randbedingungen richtig verstanden habe, gibt es für den SDV keine Lizenzen mehr, oder? Dann könnte ich diesen Workaround ja nicht anwenden...

Benutzeravatar
Black
Beiträge: 3390
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 73 Mal
Danksagung erhalten: 296 Mal
Kontaktdaten:

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von Black » 20.05.2020, 14:55

Aquaplex hat geschrieben:
20.05.2020, 14:46
Wenn ich die Randbedingungen richtig verstanden habe, gibt es für den SDV keine Lizenzen mehr, oder? Dann könnte ich diesen Workaround ja nicht anwenden...
Ich hatte mich nur zeitweise aufgrund der etwas arg entgleisten Anfeindungen eines Einzelnen hier zurückgenommen, das stimmt.
Da du auch kein Member auf meiner Ignore-List bist, spricht von meiner Seite aus nix gegen deine Freischaltung.

Black
Die Wahrheit ist ein Chor aus Wind
Meine Seite, ok noch bisschen im Aufbau

RaspberryMatic 3.53.30.20200919 mit Groundplane Antennenmod
jede Menge Sensoren und Aktoren, Logamatic 2107 Gateway zum Buderus Kessel
ioBroker unter ProxMox auf NUC als Hauptsteuersystem und Visualisierung
Script Time Scheduler V1.3
Howto - AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 4.05.01E Scripteditor und Objektinspektor

technical contribution against annoying advertising

johannesscherbaum
Beiträge: 1
Registriert: 23.05.2020, 18:02
System: CCU

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von johannesscherbaum » 23.05.2020, 18:04

Hallo, kann man denn den Text noch etwas besser formatieren? Bspw. fett, unterstrichen oder kursiv?

MichaelN
Beiträge: 1166
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 81 Mal
Danksagung erhalten: 114 Mal

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von MichaelN » 23.05.2020, 18:07

Nein, das geht nicht.Was geht steht auf Seite 1:
viewtopic.php?f=60&t=55269#p550679

Aquaplex
Beiträge: 19
Registriert: 16.11.2011, 18:16
Danksagung erhalten: 1 Mal

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von Aquaplex » 26.05.2020, 13:48

Stefan0815 hat geschrieben:
11.05.2020, 16:56
..ist ein BUG im Scripteditor.
20200511_165514.jpg
Habe noch einen Workaround gefunden: eine Systemvariable (Zeichenkette) mit dem Inhalt "^C" erstellen und diese im Skript an die Temperatur anfügen. Dann funktioniert die Anzeige als "°C" im Display :D

Benutzeravatar
FBK2904
Beiträge: 283
Registriert: 22.03.2016, 17:12
System: Alternative CCU (auf Basis OCCU)
Wohnort: Ludwigsburg
Hat sich bedankt: 22 Mal
Danksagung erhalten: 12 Mal

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von FBK2904 » 02.06.2020, 21:22

Hi, HmIP-WRCD Spezialisten !

Ich/wir wollen gerne den HmIP-WRCD auf unserer Terrasse (Wetter geschützt) als optischen (Text) UND akustischen (Piep) "Signalgeber" einsetzen,
um diverse Statuse die schon vorhanden sind, wie Spülmaschine fertig, Waschmaschine fertig, Trockner fertig
oder jemand klingelt sich einen Wolf :roll: vor der gegenüberliegenden Haustür (via HmIP-DSD-PCB) einsetzen.
Seinen klassischen Kumpel (HM-Dis-WM55) hatte ich vor ein paar Jahren schon einmal in Betrieb, war aber nicht so ganz damit zufrieden.

Jetzt habe ich aber auf der Shopseite (aus dem hohen Norden) folgende Bemerkung in der Beschreibung gesehen:
"Sollten Sie das Gerät über einen längeren Zeitraum (>24 h) nicht verwenden, müssen Sie vor der Außerbetriebsetzung des Geräts bei eingelegten Batterien eine der Bedientasten drücken, damit sich das Display vollständig weiß färbt. Nachdem sich das Display weiß gefärbt hat, können Sie die Batterien entnehmen."

Soll das heißen, dass wenn der HmIP-WRCD länger als >24 Stunden nicht angesteuert/aktualisiert wird, außer Betrieb genommen werden muss damit sich der Displayinhalt nicht einbrennt :shock: ?
Das wäre ja der Supergau-hoch-zehn, wenn sich der Displayinhalt nur alle paar Tage ändert !

Wie sind da Eure Erfahrungen dazu?

Grüssle,
Frank

Xel66
Beiträge: 7771
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 37 Mal
Danksagung erhalten: 318 Mal

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von Xel66 » 02.06.2020, 21:50

Dann schreib doch jede Nacht einfach einen leeren Bildschirm. Morgens kannst Du ihn ja wieder mit Inhalt füllen.

Gruß Xel66
---------------------------------------------------------------------------------
358 Kanäle in 141 Geräten und 114 CUxD-Kanäle in 24 CUxD-Geräten:
274 Programme, 265 Systemvariablen und 144 Direktverknüpfungen,
RaspberryMatic Version 3.51.6.20200420
Testsystem: CCU3 3.49.17
---------------------------------------------------------------------------------

MichaelN
Beiträge: 1166
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 81 Mal
Danksagung erhalten: 114 Mal

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von MichaelN » 02.06.2020, 21:54

Hat mich auch etwas irritiert, aber es scheint um die außer Betriebnahme zu gehen.

Habe bei epaper auch noch nie von einbrennen gehört

Antworten

Zurück zu „HomeMatic IP mit CCU“