Lampenstatus anzeigen?

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

alchy
Beiträge: 10761
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 675 Mal

Re: Lampenstaus anzeigen?

Beitrag von alchy » 13.04.2016, 03:33

BausatzFan hat geschrieben:
Was ich will ist schnell und übersichtlich über die Stati der verschiedenen Aktoren informiert zu sein. Meine Lösung dazu ist bislang Dein Fenster-Skript, welches die Stati aller Fenster in eine Variable schreibt, die ich mir auf der Startseite im WebUI anzeigen lasse. Zukünftig will ich sie mir auch bei Alarmen per E-Mail schicken lassen.
Das hast du nun schon mehrfach geschrieben. Und ich frage dich letztmalig Was willst du genau?
Anzahl der eingeschaltenden Lichter + Namen, welche Kanäle sind eingeschaltet + ZEit, seit welcher Zeit ...und oder oder? Verstehst du meine Frage?

PS: Auch im Mailaddon kannst du im TCL Reiter JEDEN Aktor oder Sensor oder Systemvariable usw. abfragen. Wie das geht habe ich auch schon mehrfach gepostet.


BausatzFan hat geschrieben:
Vielleicht ist das der Grund warum ich bislang in meinen E-Mails mit den Variablen nur "null" angezeigt bekomme. Ist die Ausgabe Deines oben geposteten Skripts mit den Fenstern geeignet um an TLC übergeben zu werden? Hast Du einen Hinweis für mich, wie Variablen vom Typ Zeichenkette an TCL übergebe? Bzw. wo liegt mein Fehler?
Steuercodes und HTML Zeugs darfst du nicht auf der Startseite in Variablen haben, mit dem Versenden mittels dem Mailaddon hat da erstmal nichts mit zu tun.
Mich wundert, das du dir angeblich die Ausgabe des obigen Fenster offen Scriptes auf der Startseite anzeigen lässt, ohne Probleme bemerkt zu haben. :shock:

Wenn Du nur null im MAiladdon übermittelt bekommst liegt es zu 99% an fehlerhaften TCL Code, bzw. ist eine der darin abgefragten Datenpunkte so nicht vorhanden.
Das ist aber kein Thema für diesen Thread. Benutze bitte die Suche, im Unterforum >> Addons Sonstige<< habe ich schon mehrfach Usern geholfen, die selbige Probleme mit dem Mailaddon hatten.

Auch für dich der Hinweis, wenn du ^^ solche Fragen hast, und sie beantwortet haben möchtest, dann geize nicht mit Input.
Poste den Code in Code tags, hänge Bildschirmcopys der beteiligten Programme oder Einstellungen an usw.
Ansonsten ist keine vertretbare Hilfe möglich. Ich habe jedenfalls dazu keine Lust, immer wieder Glaskugelraten zu betreiben, auch wenn ich gerne helfen möchte.
Jedem der die entsprechenden Infos zu dem Thema gepostet hat, wurde auch geholfen. Aber nicht hier, sondern im o.g. Unterforum.
BausatzFan hat geschrieben:
Danke für den Hinweis! Das Problem war mir eigentlich bekannt, trotzdem vergesse ich es immer wieder. Jedoch lies sich sogar zwei Neustarts das Problem nicht beheben. Im HM Skript Executor lässt sich das Skript ausführen - im HM WebUI nach wie vor nicht. Die Variable wird nicht beschrieben. Hm.... :( Ich versuche es einfach morgen noch mal.
Variable wird nicht beschrieben? Hast du deinen fehlerhaften Code denn auch durch meinen geposteten Code ersetzt?
Das Script ausführen ist ja nur die halbe Wahrheit, poste mal die JSON Ausgabe des Executer, wenn du das Script ausgeführt hast.
BausatzFan hat geschrieben: Klingt nach einer brauchbaren Anwendung für mich :D . Ich werde es testen und berichten. Mir geht es hauptsächlich darum, schnell per WebUI oder Email einen Überblick über die Stati aller Aktoren/Systemvariablen zu bekommen. Ich habe mich bislang noch nicht an ein Wand-Tablet ran getraut, welches mir diese Infos liefert.
Mein zweites >> hier gepostete Script << macht das was ich geschrieben habe. Fürs genaue Lesen bist du zuständig. Du bekommst damit keinen Überblick sondern nur den letzten Auslöser des Programmes.
Ist z.B. das Licht Küche an und du schaltest das Licht Schlafzimmer zusätzlich an, dann steht in der Systemvariablen nur, das das Licht Schlafzimmer geschaltet wurde. Jetzt verstanden?

Alchy

Blacklist................... almost full
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.

Benutzeravatar
BausatzFan
Beiträge: 106
Registriert: 05.10.2015, 21:36
Wohnort: Bayern

Re: Lampenstaus anzeigen?

Beitrag von BausatzFan » 26.04.2016, 11:40

Hallo noch mal,

Sorry das ich mich nicht mehr gemeldet habe. Seit meinen letzten Änderungen an der CCU2 bekomme ich das Ding nicht mehr zum laufen. Ich habe ständige abstürze. Die CCU2 ist nie länger als ein paar Minuten erreichbar. Meine Fehlerdiagnose ist ähnlich wie im Beitrag von Wortmann30 "CCU2 stürzt immer 1-2 mal täglich ab"
http://homematic-forum.de/forum/viewtop ... og#p272745

Ich bin noch dabei die einzelnen Punkte zur Fehlersuche durchzuarbeiten. Trotzdem Danke für die Hilfe zwecks Lampenstatus :) Ich werde mich dem Thema irgendwann später noch mal widmen.
CCU3 - Firmwareversion: 3.41.11; 243 Kanaele in 84 Geraeten und 49 CUxD-Kanaele in 4 CUxD-Geraeten

Pihero
Beiträge: 238
Registriert: 02.08.2019, 21:24
Wohnort: Pforzheim
Hat sich bedankt: 1 Mal
Danksagung erhalten: 3 Mal

Re: Lampenstatus anzeigen?

Beitrag von Pihero » 03.04.2020, 21:41

Hallo Zusammen,

ich hab das Skript weiter vorn von Alchy verwendet (verwende eins von Ihm auch um die gleichen Aktoren die ich hier prüfen möchte auszuschalten)...
Leider wird immer "0" in die Variable geschrieben...

Code: Alles auswählen

! Alle Aktoren in wählbaren verschiedenen Räumen/Gewerken/Favoriten (trennen mit \t )
! Ausgabe der eingeschalteten Lichter
! (c)by Alchy
string liste = "LichtEG";
! Dont touch behind this Line
string index; 
string slist ="";
integer counter = 0;
foreach (index, liste) {
object sec = dom.GetObject(""#index#"");
string itemId;
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.State()) ) {counter = counter +1;}
if ( (hssType == "DIMMER") && (item.State()) ) {counter = counter +1;}
}
}
}
if (counter > 0) {
slist = "true";
} else{
slist = "false";
}
dom.GetObject("Licht innen SV").State(slist);
Was mach ich falsch?

Danke und Gruß vorab,
Philipp

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

Re: Lampenstatus anzeigen?

Beitrag von Xel66 » 04.04.2020, 08:24

Das Script kann nur eine boolsche Variable bedienen (true oder false). Du hast vermutlich eine falsche Variable angelegt, denn das Script zählt zwar die eingeschalteten Geräte. Es entscheidet aber nur an Hand des Counters, ob die Variable einen der beiden Zustände annehmen kann. Das Script selbst habe ich nicht geprüft oder getestet. Also kann eben "0" nicht sein. Da müsste "wahr" oder "falsch" drin stehen.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

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

Re: Lampenstatus anzeigen?

Beitrag von Baxxy » 04.04.2020, 10:01

Pihero hat geschrieben:
03.04.2020, 21:41
Leider wird immer "0" in die Variable geschrieben...
Ich vermute du möchtest damit IP-Geräte prüfen. Alchy's Script stammt aber noch aus der Prä-IP-Zeit.
Ich habe es hier mit 3 PS(M) getestet und die werden auch nicht gezählt wenn sie AN sind.
Und da wir uns vorbildlich an...

Code: Alles auswählen

! Dont touch behind this Line
halten, müssen wir auf Alchy warten der bestimmt im nullkommanix das Script auch für IP-Geräte funktionsfähig macht. :wink:

Grüße
Baxxy

alchy
Beiträge: 10761
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 675 Mal

Re: Lampenstatus anzeigen?

Beitrag von alchy » 04.04.2020, 20:26

Pihero hat geschrieben:
03.04.2020, 21:41
ich hab das Skript weiter vorn von Alchy verwendet
Im uraltem >Original< wird die Anzahl der eingeschalteten Kanäle ausgegeben. Du hast nun das Script geändert und scheinst stattdessen eine Logikvariable auf wahr setzen zu wollen, wenn min 1 Kanal eingeschalten ist. Ist das so :?: :?:
Das sollte auch funktionieren, auch wenn du es in dem Fall viel einfacher mittels eines Programms ohne Script auch machen kannst.
ABER
Es setzt natürlich voraus, das du in deinem Gewerk/Favoriten.... auch passende & eingeschaltene Kanäle hast. (passend soll heißen der HssTyp muss stimmen usw.)
Da könnte die Vermutung von Baxxy

Alchy

Blacklist................... almost full
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.

Pihero
Beiträge: 238
Registriert: 02.08.2019, 21:24
Wohnort: Pforzheim
Hat sich bedankt: 1 Mal
Danksagung erhalten: 3 Mal

Re: Lampenstatus anzeigen?

Beitrag von Pihero » 04.04.2020, 22:09

Vielen Dank für die vielen Antworten!

Ja ich möchte eine Variable setzen wenn eins Gerät eingeschaltet ist.

Bzgl. Kompatibilität zu IP habe ich auch dran gedacht...da meine Kenntnisse mäßig sind, kann ich nur noch das Skript beisteuern (auch von Alchy) mit dem ich die gleiche Favoriten-Gruppe auch auf einen Schlag ausschalte.

Code: Alles auswählen

! Alle Aktoren in wählbaren verschiedenen Gewerken/Favoriten (trennen mit \t ) 
! mit HssType des Items ausschalten wenn eingeschalten  
! https://homematic-forum.de/forum/viewtopic.php?t=25794#p223998
!  v 0.8 (c) by Alchy
Ich hatte auch geschaut ob ich die Skripte selbstständig "verschneiden" kann, aber ich Blicks (noch) nicht...

Danke für eure Unterstützung.

Danke und Gruß, Philipp
Zuletzt geändert von alchy am 05.04.2020, 17:49, insgesamt 1-mal geändert.
Grund: Scriptcopy gelöscht

alchy
Beiträge: 10761
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 675 Mal

Re: Lampenstatus anzeigen?

Beitrag von alchy » 04.04.2020, 22:59

Die Anpassungen sind grundsätzlich kein Problem.
Die Voraussetzungen musst trotzdem du erfüllen.

Alchy

Blacklist................... almost full
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.

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

Re: Lampenstatus anzeigen?

Beitrag von Baxxy » 05.04.2020, 09:42

Pihero hat geschrieben:
04.04.2020, 22:09
Kompatibilität zu IP
Leider hast du ja immer noch nicht angegeben ob (und welche) IP-Geräte mit dem Script geprüft werden sollen.
Gehe ich jetzt mal von HmIP-BSM oder HmIP-PS(M) aus würde es reichen eine Zeile im Script hinzuzufügen.

Code: Alles auswählen

var hssType = item.HssType();
if ( (hssType == "SWITCH") && (item.State()) ) {counter = counter +1;}
if ( (hssType == "DIMMER") && (item.State()) ) {counter = counter +1;}
if ( (hssType == "SWITCH_TRANSMITTER") && (item.DPByHssDP("STATE").Value()) ) {counter = counter +1;}
Damit wird dann der Kanal "Statusmitteilung Schaltausgang" von IP-Geräten geprüft.

"SWITCH_VIRTUAL_RECEIVER" anstatt "SWITCH_TRANSMITTER" geht natürlich auch. Würde ich aber (wenn virtuelle Kanäle benutzt werden) nicht nehmen. Den Rest (Dimmer etc) müsstest du selber einpflegen, da fehlt mir die Hardware zum testen.

Grüße
Baxxy

Pihero
Beiträge: 238
Registriert: 02.08.2019, 21:24
Wohnort: Pforzheim
Hat sich bedankt: 1 Mal
Danksagung erhalten: 3 Mal

Re: Lampenstatus anzeigen?

Beitrag von Pihero » 05.04.2020, 20:08

Ich habe eine komplette Homematic IP wired Konfiguration und habe bisher nur noch einige PSM die aber nicht in dieser Favoriten-Gruppe sind.

Zum Verständnis: lassen sich nicht aus dem "Alles AUS"-Skript die notwendigen Änderungen für das "Lampenstatus"-Skript ableiten?

EDIT:

Hab es jetzt mal selbst probiert und hoffe das das mit dem Copyright in Ordnung geht...bin ja eh gescheitert :cry:
Hier das nicht funktionierende Skript:

Code: Alles auswählen

! Alle Aktoren in wählbaren verschiedenen Räumen/Gewerken/Favoriten (trennen mit \t )
! Ausgabe der eingeschalteten Lichter
! (c)by Alchy
string liste = "LichtEG";
! Dont touch behind this Line
string index; 
string slist ="";
integer counter = 0;
foreach (index, liste) {
object sec = dom.GetObject(""#index#"");
string itemId;
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").Value()) ) {counter = counter +1;}
if ( (hssType == "DIMMER") && (item.DPByHssDP("LEVEL").Value()) ) {counter = counter +1;}
if ( (hssType == "SWITCH_TRANSMITTER") && (item.DPByHssDP("STATE").Value()) ) {counter = counter +1;}
if ( (hssType == "DIGITAL_OUTPUT") && (item.DPByHssDP("STATE").Value()) ) {counter = counter +1;}
if ( (hssType == "DIMMER_VIRTUAL_RECEIVER") && (item.DPByHssDP("LEVEL").Value()) ) {counter = counter +1;}
if ( (hssType == "VIRTUAL_DIMMER") && (item.DPByHssDP("LEVEL").Value()) ) {counter = counter +1;}
}
}
}
if (counter > 0) {
slist = "true";
} else{
slist = "false";
}
dom.GetObject("Licht innen SV").State(slist);
Danke und Gruß, Philipp

Antworten

Zurück zu „HomeMatic allgemein“