Script soll status abfragen und darstellen
Moderator: Co-Administratoren
-
- Beiträge: 212
- Registriert: 04.06.2015, 20:26
- Hat sich bedankt: 7 Mal
- Danksagung erhalten: 4 Mal
Script soll status abfragen und darstellen
Ich habe in mediola ein Button erstellt das über ein Programm/script in der Homematic das Gewerk Licht komplett ausschaltet...
Ich möchte vor dem Button gerne ein Lampen Symbol haben das wenn im Gwerk Licht nur eine Lampe an ist dieses Symbol anzeigt das Lampen eingeschaltet sind...
Wenn ich nun das Programm vom Tablet aus starte und alle Lampen im Gewerk Licht aus sind... soll sich das Lampensymbol ändern und anzeigen keine Lampe eingeschaltet..
Ich bräuchte also ein Script das den status Gewerk Lampe überprüft und in eine Systemvariable schreibt... So kann ich vom Tablet aus sehen ob in dem Gewerk noch irgendwelche Lampen eingeschaltet sind..
Kann mir da einer helfen.. ich habe null Ahnung vom script schreiben
Ich möchte vor dem Button gerne ein Lampen Symbol haben das wenn im Gwerk Licht nur eine Lampe an ist dieses Symbol anzeigt das Lampen eingeschaltet sind...
Wenn ich nun das Programm vom Tablet aus starte und alle Lampen im Gewerk Licht aus sind... soll sich das Lampensymbol ändern und anzeigen keine Lampe eingeschaltet..
Ich bräuchte also ein Script das den status Gewerk Lampe überprüft und in eine Systemvariable schreibt... So kann ich vom Tablet aus sehen ob in dem Gewerk noch irgendwelche Lampen eingeschaltet sind..
Kann mir da einer helfen.. ich habe null Ahnung vom script schreiben
Re: Script soll status abfragen und darstellen
Das ist eigentlich sehr einfach. Ein Script von Alchy (leicht abgeändert) läuft seit Zeiten sehr zuverlässig.
Ich habe zwei Systemvariablen angelegt... Dann ein Programm, das ausgeführt wird, wenn ein Gerät seinen Status verändert. ACHTUNG, dieses Script reagiert auf alle Geräte des Gewerks 'Licht' ! Andere Schalter/Dimmer/etc., die nicht in 'Licht' sind werden nicht erfasst. Für mich schön, da ich so auch Bereiche trennen kann, denn Geräte können ja auch mehreren Gewerken angehöhren.
Du siehst, ich schreibe das zwei mal in Variablen, da es sonst im NEO nur mit Punkt und Folgezahlen angezeigt wird auch als String. Bei mir ist auch der "Sonst"-Teil gleich dem "Wenn dann"-Teil (habe ich aus Versehen abgeschnitten).
im NEO sieht es z.B. so aus (links unten) als Status und Seitenwechselbutton. Die untere Zeile wird bei mir immer angezeigt, nur mit wechselnden Inhalten. Drücke ich auf ein Element, hier die Birne, geht es zur Seite Beleuchtung: ...oder so auf der Lichtseite. Die Grafiken sind von mir überholt und erstellt worden, also nicht wundern. Im NEO die Geräte und Systemvariablen zu importieren sollte jeder können. Dann Status zuweisen etc... und schon läuft es fast.
Die Zahl neben dem eigentlichen Icon ist eine Textvariable aus dem String (s.o.), die liegt "auf" dem Button/Schalter/Statusanzeige ->eigentlich ein Doppelmoppel... Gleiches mache ich auch mit den Fenstern (gelb gekippt, rot offen, Flieder alles aus der Garage).
Jan
Ich habe zwei Systemvariablen angelegt... Dann ein Programm, das ausgeführt wird, wenn ein Gerät seinen Status verändert. ACHTUNG, dieses Script reagiert auf alle Geräte des Gewerks 'Licht' ! Andere Schalter/Dimmer/etc., die nicht in 'Licht' sind werden nicht erfasst. Für mich schön, da ich so auch Bereiche trennen kann, denn Geräte können ja auch mehreren Gewerken angehöhren.
Code: Alles auswählen
! Abfrage mit HssType des Items = besser, da nur Dimmer oder Switch)
object sec = dom.GetObject("Licht");
string itemId;
integer anzahl =0 ;
foreach(itemId, sec.EnumUsedIDs()) {
var item = dom.GetObject(itemId);
if (item.IsTypeOf(OT_CHANNEL)) {
var device = dom.GetObject(item.Device());
var hssType = item.HssType();
var value = false;
var level = 0.0;
if ( hssType == "SWITCH") { value = item.DPByHssDP("STATE").Value(); }
if ( hssType == "DIMMER") { level = item.DPByHssDP("LEVEL").Value(); }
if (value || (level != 0.0)) { anzahl = anzahl +1; }
}
}
dom.GetObject("var_AnzahlLichter").State(anzahl);
dom.GetObject("var_AnzahlLichter_String").State(anzahl).ToString(0);
im NEO sieht es z.B. so aus (links unten) als Status und Seitenwechselbutton. Die untere Zeile wird bei mir immer angezeigt, nur mit wechselnden Inhalten. Drücke ich auf ein Element, hier die Birne, geht es zur Seite Beleuchtung: ...oder so auf der Lichtseite. Die Grafiken sind von mir überholt und erstellt worden, also nicht wundern. Im NEO die Geräte und Systemvariablen zu importieren sollte jeder können. Dann Status zuweisen etc... und schon läuft es fast.
Die Zahl neben dem eigentlichen Icon ist eine Textvariable aus dem String (s.o.), die liegt "auf" dem Button/Schalter/Statusanzeige ->eigentlich ein Doppelmoppel... Gleiches mache ich auch mit den Fenstern (gelb gekippt, rot offen, Flieder alles aus der Garage).
Jan
Re: Script soll status abfragen und darstellen
auch so, hier das "AUS"-Script...
Das wird nur manuell durch den Button "Licht aus" vom NEO in der CCU aufgerufen, getriggert wird da nichts.
Jan
Code: Alles auswählen
! Alle Lichter aus mit Abfrage mit HssType des Items = besser, da nur Dimmer oder Switch by Alchy
object sec = dom.GetObject("Licht");
string itemId;
integer anzahl =0 ;
foreach(itemId, sec.EnumUsedIDs()) {
var item = dom.GetObject(itemId);
if (item.IsTypeOf(OT_CHANNEL)) {
var device = dom.GetObject(item.Device());
var hssType = item.HssType();
if ( hssType == "SWITCH") { item.DPByHssDP("STATE").State(0); }
if ( hssType == "DIMMER") { item.DPByHssDP("LEVEL").State(0.0); }
}
}
Jan
Re: Script soll status abfragen und darstellen
Hallo zusammen,
leider funktioniert das Script bei mir irgendwie nicht. Ich habe all meine Licht Aktoren im Gewerk "Licht" ausserdem habe ich auch die 2 Systemvariablen erstellt aber sobald ich das Script manuell durchlaufen lasse zeigen die Variablen immer den Wert 0 an obwohl Lichter brennen. Was kann ich falsch gemacht haben??
leider funktioniert das Script bei mir irgendwie nicht. Ich habe all meine Licht Aktoren im Gewerk "Licht" ausserdem habe ich auch die 2 Systemvariablen erstellt aber sobald ich das Script manuell durchlaufen lasse zeigen die Variablen immer den Wert 0 an obwohl Lichter brennen. Was kann ich falsch gemacht haben??
Re: Script soll status abfragen und darstellen
Poste doch einfach mal dein Script...Bernd80 hat geschrieben:sobald ich das Script manuell durchlaufen lasse zeigen die Variablen immer den Wert 0 an obwohl Lichter brennen. Was kann ich falsch gemacht haben??
Die Variablen haben die gleichen Namen, so wie bei mir?
Eine ist ein String, die andere eine Zahl. Das hast du auch beachtet?
Ich denke aber an folgendes: Bei manueller Auslösung wird immer der Dann-Zweig ausgeführt!
Hast du, wie ich es bei mir gemacht habe (eben um auch manuell zu aktualisieren), für eine klare Anzeige, sowohl beim Wenn- als auch beim Dann-Zweig das gleiche eingetragen?
Wie lässt du dir das Ergebnis anzeigen?
Jan
Re: Script soll status abfragen und darstellen
Hallo und erstmal herzlichen Dank für deine Hilfe.....
Ich sage direkt dabei das ich blutiger Anfänger bin was Homematic angeht.
Das Script habe ich eins zu eins von dir kopiert und eingesetzt. Die Variablen habe ich auch genau so benannt wie bei dir. Die eine ist eine Zahl die andere eine Zeichenkette (ich hoffe das meinst du mit string) Ach ja... auch wenn ich das Aus Script manuell durchlaufen lasse geht bei mir auch keine Lampe aus
Ich sage direkt dabei das ich blutiger Anfänger bin was Homematic angeht.
Das Script habe ich eins zu eins von dir kopiert und eingesetzt. Die Variablen habe ich auch genau so benannt wie bei dir. Die eine ist eine Zahl die andere eine Zeichenkette (ich hoffe das meinst du mit string) Ach ja... auch wenn ich das Aus Script manuell durchlaufen lasse geht bei mir auch keine Lampe aus
Re: Script soll status abfragen und darstellen
Ich gehe davon aus du hast "CuxD" installiert? Ist IMHO Pflicht, auch für die Stabilität der CCU.
Ohne den CuxD geht das nicht...
http://homematic-forum.de/forum/viewtopic.php?t=15298
Sorry, ich war davon ausgegangen das dies schon passiert wäre.
Jan
Ohne den CuxD geht das nicht...
http://homematic-forum.de/forum/viewtopic.php?t=15298
Sorry, ich war davon ausgegangen das dies schon passiert wäre.
Jan
Re: Script soll status abfragen und darstellen
Ok das erklärt natürlich das Problem
Ich habe mich mit dem Cuxd noch nicht groß befasst aber ich gehe davon aus das es nicht alleine mit dem installieren getan ist oder?
Ich habe mich mit dem Cuxd noch nicht groß befasst aber ich gehe davon aus das es nicht alleine mit dem installieren getan ist oder?
Re: Script soll status abfragen und darstellen
CuxD ist für wahnsinnig viel gut! Installiere es und halte dich an die Anleitung (!), denn ohne ein sauber installiertes CuxD-Gerät geht nichts.
Ich denke, da ich mich auch nicht mehr so gut daran erinnere was ich für Probleme hatte, kurzes Einlesen VOR der Installation ist gut und sinnvoll. Also bitte mal danach suchen...
Jan
Ich denke, da ich mich auch nicht mehr so gut daran erinnere was ich für Probleme hatte, kurzes Einlesen VOR der Installation ist gut und sinnvoll. Also bitte mal danach suchen...
Jan
Re: Script soll status abfragen und darstellen
Und ohne cuxd ist es nicht möglich das hinzubekommen ? wenn ich das richtig gelesen habe muss ich ja auch noch Hardware besorgen? Fange grade an mich mit homematic zu beschäftigen und das mit mit cuxd scheint mir auf den ersten Blick auch nicht ohne