Ansteuerung der Homematic Statusanzeige HM-OU-LED16
Moderator: Co-Administratoren
Re: Ansteuerung der Homematic Statusanzeige HM-OU-LED16
Naja, was soll ich ein Screenshot Posten wenn es doch eine PDF gibt.
Wie gesagt, ich habe mich an die Anleitung gehalten, aber die LED-Anzeige macht keinen mucks...
Dachte eher das in der Anleitung etwas fehlt, diese also unvollständig ist...?
Wie gesagt, ich habe mich an die Anleitung gehalten, aber die LED-Anzeige macht keinen mucks...
Dachte eher das in der Anleitung etwas fehlt, diese also unvollständig ist...?
Re: Ansteuerung der Homematic Statusanzeige HM-OU-LED16
Oh, es gibt viele pdf!!CCUCCU hat geschrieben:Naja, was soll ich ein Screenshot Posten wenn es doch eine PDF gibt.
...
und da kann man sich viel bei vertippen
Gruß
Rainer
Alle meine Hinweise sind auf eigene Gefahr umzusetzen. Immer einen Fachmann zu Rate ziehen!
Re: Ansteuerung der Homematic Statusanzeige HM-OU-LED16
Komm mir etwas veräppelt vor, ich rede natürlich von der PDF hier im Post auf der ersten Seite.
-
- Beiträge: 9115
- Registriert: 17.11.2012, 10:47
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Köln
- Hat sich bedankt: 37 Mal
- Danksagung erhalten: 283 Mal
Re: Ansteuerung der Homematic Statusanzeige HM-OU-LED16
CCUCCU hat geschrieben:Komm mir etwas veräppelt vor,
Hi,buempi hat geschrieben:Aber ohne, dass du genauer dokumentierst (Screenshots)
warum denkst Du, gibt es so wenige diesbez. Freds hier, die letztendlich fast alle auf dem gleichen (User-) Fehler beruhen
Aber - wer nicht will.., der hat schon.
Gruß Günter
pivccx mit 3.xx in Produktiv und Testsystem mit HM-, HM-W, HMIP- und HMIP-W Geräten, HPCx Studio 4.1,
L-Gateways, RS-L-Gateways, HAP, Drap, FHZ200x, vereinzelt noch FS2x-Komponenten.
HM / HM-IP: Zur Zeit knapp 300 Komponenten mit ??? Kanälen .
Ich übernehme für alle von mir gegebenen Hinweise, Tipps und Links keine Haftung! Das Befolgen meiner Tipps ist nur für Fachkundige gedacht und erfolgt auf eigene Gefahr!
pivccx mit 3.xx in Produktiv und Testsystem mit HM-, HM-W, HMIP- und HMIP-W Geräten, HPCx Studio 4.1,
L-Gateways, RS-L-Gateways, HAP, Drap, FHZ200x, vereinzelt noch FS2x-Komponenten.
HM / HM-IP: Zur Zeit knapp 300 Komponenten mit ??? Kanälen .
Ich übernehme für alle von mir gegebenen Hinweise, Tipps und Links keine Haftung! Das Befolgen meiner Tipps ist nur für Fachkundige gedacht und erfolgt auf eigene Gefahr!
-
- Beiträge: 325
- Registriert: 10.03.2015, 10:54
- Wohnort: Süd NDS
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 8 Mal
Re: Ansteuerung der Homematic Statusanzeige HM-OU-LED16
Hallo,
schöne Anleitung,
zwei Fragen habe ich dazu:
Warum werden die Systemvariablen nicht den Kanälen zugeordnet? Dann würde sich doch das
ganze getue mit den den Ermitteln der zugehörigen Variablen zu den einzelnen Kanälen.
Warum wird hier eine Variable mit 1,2,3 verwendet und nicht eine Variable mit "rot,grün,aus"?
Bei mir funktioniert hierbei die Abfrage auf Variablenänderungen "auf Aktualisierung"
ohne Probleme.
schöne Anleitung,
zwei Fragen habe ich dazu:
Warum werden die Systemvariablen nicht den Kanälen zugeordnet? Dann würde sich doch das
ganze getue mit den den Ermitteln der zugehörigen Variablen zu den einzelnen Kanälen.
Warum wird hier eine Variable mit 1,2,3 verwendet und nicht eine Variable mit "rot,grün,aus"?
Bei mir funktioniert hierbei die Abfrage auf Variablenänderungen "auf Aktualisierung"
ohne Probleme.
MfG
Sissiwup
--------------------------------------------
CCu3,CCu2Gateway,RaspiGateway,LanGateway
--------------------------------------------
Sissiwup
--------------------------------------------
CCu3,CCu2Gateway,RaspiGateway,LanGateway
--------------------------------------------
-
- Beiträge: 325
- Registriert: 10.03.2015, 10:54
- Wohnort: Süd NDS
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 8 Mal
Re: Ansteuerung der Homematic Statusanzeige HM-OU-LED16
Hallo,
ohne viel Programmieren habe ich folgende Lösung gebastelt:
(mal für einen Kanal realsiert)
Die Systemvariable dazu:
Um alle Werte bei Bedarf neu zu initalisieren würde ich dann ein Script nehmen, welches immer die einzelne Systemvariable abfragt und dann entsprechend die Anzeige setzt.
Vorteil, wenn man sich jetzt die Anzeige in de UI anzeigt:
Dan sieht man auch gleich den Status.
Erweiterungsidee: Wenn eine Servicemeldung auftrifft, die das Gerät Anzeige betrifft, die Aktualiserung aller Kanäle an die Anzeige senden.
ohne viel Programmieren habe ich folgende Lösung gebastelt:
(mal für einen Kanal realsiert)
Die Systemvariable dazu:
Um alle Werte bei Bedarf neu zu initalisieren würde ich dann ein Script nehmen, welches immer die einzelne Systemvariable abfragt und dann entsprechend die Anzeige setzt.
Vorteil, wenn man sich jetzt die Anzeige in de UI anzeigt:
Dan sieht man auch gleich den Status.
Erweiterungsidee: Wenn eine Servicemeldung auftrifft, die das Gerät Anzeige betrifft, die Aktualiserung aller Kanäle an die Anzeige senden.
MfG
Sissiwup
--------------------------------------------
CCu3,CCu2Gateway,RaspiGateway,LanGateway
--------------------------------------------
Sissiwup
--------------------------------------------
CCu3,CCu2Gateway,RaspiGateway,LanGateway
--------------------------------------------
Re: Ansteuerung der Homematic Statusanzeige HM-OU-LED16
Ich habe mich auch mal an einem Script für die LED16 Anzeige versucht.
Anforderungen:
- Es soll immer nur die LED geändert wird, deren zugeordnetes Objekt (Kanal, Systemvariable) geändert wurde
- möglichst wenig Funkverkehr
- schnell
- nach Reboot refresh
- Dynamische Anordnung der zugeordneten Objekte
Zuerst habe ich mir eine Systemvariable "REBOOT" angelegt (ehemals Anwesenheit), welche nach einem Neustart ihren Status wechsel, das ist in eigenen Beiträgen beschrieben.
Dann habe ich mir einen Favoriten angelegt und zu diesem die anzuzeigenden Objekte hinzugefügt, in der Reihenfolge, wie sie in der LED Anzeige angezeigt werden sollen.
Zusätzlich habe ich einen freien Taster definiert, welcher alle LEDs aktualisiert.
Notwendigerweise habe ich noch ein Programm angelegt, welches alle Objekte mit ODER verknüpft auf Änderung prüft und dann das Script unten aufruft.
Funktion des Scriptes: Das Script prüft, durch welchen Auslöser ($src$) es aufgerufen wurde und aktualisiert nur die zugeordnete LED. Wenn der Auslöser nicht im Favoriten definiert ist, passiert auch nichts. Ist der Auslöser der "Joker" oder "REBOOT", werden alle LEDs aktualisiert. Das Script muss sicher etwas auf Euer System angepasst werden, aber das Prinzip sollte als Anregung ausreichen
Viel Erfolgt, Duseldim.
Anforderungen:
- Es soll immer nur die LED geändert wird, deren zugeordnetes Objekt (Kanal, Systemvariable) geändert wurde
- möglichst wenig Funkverkehr
- schnell
- nach Reboot refresh
- Dynamische Anordnung der zugeordneten Objekte
Zuerst habe ich mir eine Systemvariable "REBOOT" angelegt (ehemals Anwesenheit), welche nach einem Neustart ihren Status wechsel, das ist in eigenen Beiträgen beschrieben.
Dann habe ich mir einen Favoriten angelegt und zu diesem die anzuzeigenden Objekte hinzugefügt, in der Reihenfolge, wie sie in der LED Anzeige angezeigt werden sollen.
Zusätzlich habe ich einen freien Taster definiert, welcher alle LEDs aktualisiert.
Notwendigerweise habe ich noch ein Programm angelegt, welches alle Objekte mit ODER verknüpft auf Änderung prüft und dann das Script unten aufruft.
Funktion des Scriptes: Das Script prüft, durch welchen Auslöser ($src$) es aufgerufen wurde und aktualisiert nur die zugeordnete LED. Wenn der Auslöser nicht im Favoriten definiert ist, passiert auch nichts. Ist der Auslöser der "Joker" oder "REBOOT", werden alle LEDs aktualisiert. Das Script muss sicher etwas auf Euer System angepasst werden, aber das Prinzip sollte als Anregung ausreichen
Code: Alles auswählen
!Referenz auf Favoriten mit Statusobjekten
!Alle im Display anzuzeigenden Objekte in einen Favoriten
!aufnehmen, diese werden dann in der Reihenfolge angezeigt
var ref_Favorite = dom.GetObject("_name_des_Favoriten_");
!Referenz auf das 16-LED Display
var ref_d1 = dom.GetObject("_name_der_LED_Anzeige_");
!ID des Gerätes, welches immer alle LEDs alle aktualisieren soll
var joker_id = dom.GetObject("_name_des_joker_Tasters_").ID();
!ID der SysVar für den Reboot, damit nach Reboot alle LEDs aktualisiert werden
var reboot_id = dom.GetObject("_name_der_Systemvariable_für_REBOOT_").ID();
!ID des auslösenden Gerätes ermitteln
string src_id;
var ref_dp = dom.GetObject("$src$");
!Wenn $src$ gesetzt ist, Aufruf aus Programm, sonst ScriptTest
if (ref_dp)
{
!Beim Typ 1089 steht die gesuchte ID in der ID, sonst im Channel, warum auch immer.
if (ref_dp.Type()=="1089") {src_id = ref_dp.ID();} else {src_id = ref_dp.Channel();}
}
else {src_id = joker_id;}
!Variablen
integer i = 0;
integer off = 0;
integer red = 1;
integer green = 2;
integer orange = 3;
integer led_farbe;
!Loop über Objekte im Favoriten
while (i<16)
{
i = i + 1;
!Objekt aus Favoriten ermitteln (Favoriten beginnen mit 0 zu zählen)
var item = dom.GetObject(ref_Favorite.GetAt(i-1));
if ((item.ID()==src_id) | (src_id==joker_id) | (src_id==reboot_id))
{
!Type des Eintrags im Favoriten ermitteln für Unterscheidung
var itemTyp = item.TypeName();
!Initial aus
led_farbe = off;
!Eintrag im Favorit ist ein Kanal
if (itemTyp=="CHANNEL")
{
var itemState = item.DPs().GetAt(0).State();
var itemHssType = item.HssType();
!HM-LC-Sw1PBU-FM
if (itemHssType=="SWITCH")
{
if ((itemState==true)||(itemState==1)) {led_farbe=green;} else {led_farbe=off;}
}
!HM-Sec-WDS-2
if (itemHssType=="WATERDETECTIONSENSOR")
{
if (itemState==0) {led_farbe=green;}
if (itemState==1) {led_farbe=orange;}
if (itemState==2) {led_farbe=red;}
}
!HM-Sec-SCo und HM-Sec-SC über CUx (Max Fensterkontakte)
if (itemHssType=="SHUTTER_CONTACT")
{
if ((itemState==true)||(itemState==1)) {led_farbe=red;} else {led_farbe=green;}
}
}
!Eintrag im Favorit ist eine Systemvariable
if (itemTyp=="VARDP")
{
var itemValue = item.Value();
!Wie soll die Variable angezeigt werden?
!true als rot oder false als rot
!In diesem Beispiel soll die Systemvariable "ANWESENHEIT" true=grün false=rot angezeigt werden
!Alle anderen umgekehrt
if (item.Name()=="ANWESENHEIT")
{if (itemValue==true) {led_farbe=green;} else {led_farbe=red;}}
else
{if (itemValue==true) {led_farbe=red;} else {led_farbe=green;}}
}
!Eintrag im Favorit ist eine Systemvariable vom Typ Alarm
if (itemTyp=="ALARMDP")
{
var itemValue = item.Value();
if (itemValue==true) {led_farbe=red;} else {led_farbe=off;}
}
!Farbe der LED setzen, die zum Aufrufer gehört
ref_d1.Channels().GetAt(i).DPs().GetAt(1).State(led_farbe);
}
}
- lemonbiter
- Beiträge: 169
- Registriert: 16.10.2016, 23:14
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 1 Mal
Re: Ansteuerung der Homematic Statusanzeige HM-OU-LED16
Ihr lieben,
ich bin halt ein DAU... anbei Screenshot, von dem was ich verstanden habe.... Es klappt nämlich leider nicht... Nimmt mich wer bitte an die Hand?
Und na klar, mit einem einfachen Programm je Statusleuchte komme ich klar... wenn Fenster a) offen dann zeig auf LED 15 rot, wenn Fenster a) geschlossen zeig grün etc...
Ich habe insgesamt 15 Fenster Drehkontakte HM-Sec-RHS
Das Display hängt am Eingang und soll für alle jeweils rot grün orange anzeigen und wenn mal der Strom weg war, dann will ich auf den Aktor klicken und die im System hinterlegten Zustände sollen abgerufen werden...
Ziel ist es mit möglichst wenigen Programmen alles darzustellen.... Und wo wir schon mal dabei sind, wie schaffe ich das mit möglichst wenigen Programmen überhaupt?
Das Einzige was scheinbar richtig läuft ist Erfassung Anzeige des Systemvariablen in der CCU ... siehe roter Kringel im ersten Screenshot
Hier die Codes zu den einzelnen Scripten:
=====================
Script welches der Aktor auslöst, der die Anzeige re-triggert
ich bin halt ein DAU... anbei Screenshot, von dem was ich verstanden habe.... Es klappt nämlich leider nicht... Nimmt mich wer bitte an die Hand?
Und na klar, mit einem einfachen Programm je Statusleuchte komme ich klar... wenn Fenster a) offen dann zeig auf LED 15 rot, wenn Fenster a) geschlossen zeig grün etc...
Ich habe insgesamt 15 Fenster Drehkontakte HM-Sec-RHS
Das Display hängt am Eingang und soll für alle jeweils rot grün orange anzeigen und wenn mal der Strom weg war, dann will ich auf den Aktor klicken und die im System hinterlegten Zustände sollen abgerufen werden...
Ziel ist es mit möglichst wenigen Programmen alles darzustellen.... Und wo wir schon mal dabei sind, wie schaffe ich das mit möglichst wenigen Programmen überhaupt?
Das Einzige was scheinbar richtig läuft ist Erfassung Anzeige des Systemvariablen in der CCU ... siehe roter Kringel im ersten Screenshot
Hier die Codes zu den einzelnen Scripten:
Code: Alles auswählen
Script bei SetLedAnzeige Auto:
fyi: Ich habe bei [b]beiden [/b]Scripten die Ser.Nr. meiner Anzeige eingesetzt, zum Test mit und ohne Anführungszeichen.
var objSA; !auslösende Systemvariable
string vSaName; !Name der auslösenden Systemvariable
integer vSaStatus; !SystemVariablenstatus
string vKanal; !Kanal des zu setzenden Aktors
string SNAnz = abcmeineseriennummer; !Hier kommt die Seriennummer eurer
!Statusanzeige rein
!welche Variable hat das Script ausgelöst?
objSA = dom.GetObject("$src$");
vSaName = objSA.Name().ToString(); !Name
vSaStatus = objSA.State().ToString(0.00); !Inhalt als String ohne
!Nachkommastellen
!letzen beiden Stellen sind die Kanalnummer
vKanal = vSaName.Substr(vSaName.Length()-2,2 );
!Ziel Aktor:Kanal Status setzen
!ToInteger().ToString() eliminiert nur die evtl. führende 0
dom.GetObject("BidCos-RF."+ SNAnz +":"+ vKanal.ToInteger().ToString()
+".LED_STATUS").State(vSaStatus);
Script welches der Aktor auslöst, der die Anzeige re-triggert
Code: Alles auswählen
!LED16 Variablen SA01...SA16 auslesen und Anzeige(n) setzen
integer i = 0; !Schleifenzähler
string vSA; !Systemvariablenname
var objSA; !aktuelle Systemvariable
integer vSaStatus; !SystemVariablenstatus
string SNAnz = abcmeineseriennummer; !Die SN der Anzeige
while (i<16)
{
i = i + 1;
!Formatierung aus 1..16 wird 01..016
vSA = "0"+i.ToString();
!Name der Systemvariable SA01...SA16
vSA = "SA"+vSA.Substr(vSA.Length()-2,2 );
objSA = dom.GetObject(vSA); !object der Systemvariable
vSaStatus = objSA.State(); !aktueller Status
!Anzeige-Kanal setzen
dom.GetObject("BidCos-RF."+SNAnz +":"+i.ToString() +
".LED_STATUS").State(vSaStatus);
}
Zuletzt geändert von Herbert_Testmann am 05.11.2016, 11:11, insgesamt 1-mal geändert.
Grund: Scripte in CODE verpackt
Grund: Scripte in CODE verpackt
okay... ich arbeite dran
Ansteuerung der Homematic Statusanzeige HM-OU-LED16
Du brauchst ein Programm pro Fenster. (+ die Programme zum aktualisieren der Anzeige)
Was funktioniert denn. Nicht?
Liefert die Fehlerprüfung des Scriptes irgendetwas? Ich vermute du gibst die Seriennummer falsch an.
Was funktioniert denn. Nicht?
Liefert die Fehlerprüfung des Scriptes irgendetwas? Ich vermute du gibst die Seriennummer falsch an.
- lemonbiter
- Beiträge: 169
- Registriert: 16.10.2016, 23:14
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 1 Mal
Re: Ansteuerung der Homematic Statusanzeige HM-OU-LED16
Lieber Dr. Tob,
also hier im Anhang ein Programm.
Es soll, wenn der Fensterkontakt auf verschlossen steht an der LED 16 grün anzeigen. Geht wunderbar.
1. Frage: Wenn ich nun das Display stromlos mache und wieder mit Strom versorge, dann soll der Druck auf den Taster den Systemzustand auslesen. (siehe Screenshot: "Script für Re-trigger der Anzeige.png" aus dem Post zuvor) Geht nicht.
2. Frage: Muss ich für jede LED des Displays 3 Programme schreiben = 16x3 Programme? (eins für jeweils verschlossen = grün, eins für gekippt = orange, eins für offen = rot)? Wenn nein, wie geht es mit weniger?
3. Frage: Behält die CCU2 die Werte der Systemvariablen auch nach einem Reboot?
Uff...
Danke
p.s.: Vielleicht hat wer Screenshots, die es mir verständlich machen... habe hier, wie an so manchen Stellen einen dicken Pfeil im kopf (mea culpa)
also hier im Anhang ein Programm.
Es soll, wenn der Fensterkontakt auf verschlossen steht an der LED 16 grün anzeigen. Geht wunderbar.
1. Frage: Wenn ich nun das Display stromlos mache und wieder mit Strom versorge, dann soll der Druck auf den Taster den Systemzustand auslesen. (siehe Screenshot: "Script für Re-trigger der Anzeige.png" aus dem Post zuvor) Geht nicht.
2. Frage: Muss ich für jede LED des Displays 3 Programme schreiben = 16x3 Programme? (eins für jeweils verschlossen = grün, eins für gekippt = orange, eins für offen = rot)? Wenn nein, wie geht es mit weniger?
3. Frage: Behält die CCU2 die Werte der Systemvariablen auch nach einem Reboot?
Uff...
Danke
p.s.: Vielleicht hat wer Screenshots, die es mir verständlich machen... habe hier, wie an so manchen Stellen einen dicken Pfeil im kopf (mea culpa)
okay... ich arbeite dran