Seite 1 von 2

Automation-Neuling braucht Hilfe beim erstellen von Regeln

Verfasst: 30. Dez 2019 22:59
von wighdeas
Hallo zusammen,

ich brauch etwas Hilfe bei der Einrichtung von Rules mittels Visual Studio Code für mein Openhab-System. Eckdaten wie folgt:

- Openhabian/Openhab 2.4.0. auf meine RasPi4 4B
- Ich will damit mein eigenes Smart Home einrichten, wobei folgende Geräte schon eingebunden sind:
- Thermostate, Unterputzdimmer und Fußbodenheizung von HomeMaticIP (mittel CCU3, Firmware 3.47.22)
- Osram Smart+ Steckdose und Glühbirnen mittles Dezcon-Zigbee-Adapter, den ich im RasPi verbaut habe
- Yamaha RXV 497 Receiver
- Samsung TV UE50Ku6079U
- No-Name-Colorbirne Zigbee
- Mit der Einrichtung des HabPanels komme ich bis auf Kleinigkeiten zurecht.
- Ich habe recht wenig Programmiererfahrung und denke mich gerade in Visual Studio rein, Items und sitemap (bedingt) habe ich auch schon angelegt, klappt soweit.
- Nun möchte ich Regeln erstellen damit das ganze auch Smart wird und ich nicht nur wie ein Horst mein Licht mit dem PC dimmen kann.
- Mein grundlegendes Problem ist wohl neben der fehlenden Kenntnis im Programmieren auch, dass ich nicht weiß welche Befehle ich genau an welchen Aktor bzw. Item in welchem Format schicken muss.

Beispiel und auch Anlass meines Beitrags: Ich würde gerne das Licht im Wohnzimmer auf 20% dimmen, sobald ich den Fernseher und damit auch Receiver (sind über ACR verbunden und Receiver geht mit TV an). Dazu habe ich folgende Rule geschrieben:

Code: Alles auswählen

rule "Livingroom_TV_Mode"
when
Item HeimkinoYamahaReceiverRXV479_Power changed [from <OFF>] [to <ON>]
then DimmerschalterWohnzimmer1LEVEL.sendCommand(0.2)
end
nun passiert nichts.

Kann mir jemand sagen, ob meine Rule einen Fehler beinhaltet (z.B. Falsches Command an Dimmer), der Trigger falsch formuliert ist (changed from ...to...) oder - was ich vermute - hier ein viel grundlegenderes Problem vorliegt? Gut möglich, dass ich was vergessen habe mitzuteilen aber das teilt mir sicher jemand mit :D Vielen Dank schonmal für euer Feedback (hoffentlich noch dieses Jahr).

Re: Automation-Neuling braucht Hilfe beim erstellen von Regeln

Verfasst: 31. Dez 2019 01:08
von udo1toni
Ein Dimmer Item erwartet zwar einen Prozentwert, der bewegt sich aber zwischen 0 und 100, nicht zwischen 0 und 1.
Der Trigger muss anders geschrieben werden.
Die konkrete Rule sollte also eher so aussehen:

Code: Alles auswählen

rule "Livingroom_TV_Mode"
when
    Item HeimkinoYamahaReceiverRXV479_Power changed from OFF to ON
then 
    DimmerschalterWohnzimmer1LEVEL.sendCommand(20)
end
Es gibt übrigens keine Dimmerschalter ;) sondern Dimmer und Schalter. Ein Dimmer hat per Definition immer ein Level, womit Der Itemname kürzer und prägnanter z.B. DimmerWohnzimmer1 lauten sollte.

Re: Automation-Neuling braucht Hilfe beim erstellen von Regeln

Verfasst: 31. Dez 2019 14:12
von wighdeas
Hallo udo1toni,

vielen Dank dafür! Das war gerade ein fast übernatürlicher Moment als sich das Licht verdunkelt hat :lol: wobei meine Frau minimal weniger beeindruckt war.

Nun ist mein erstes Problem gelöst und um zu verhindern, dass ich viele weitere Fragen stelle - wie oder wo finde ich raus welche Commands für welches Item gültig sind?

Und noch eine Sidequest: mit welchem Befehl kann ich den Intervall verkürzen bzw. festlegen in welchem ein Item einen Zustand(swelchsel) übermittelt? Grund ist, dass das Licht erst nach 5-8 Sekunden herunterdimmt.

Note: absolut richtig - Dimmer oder Schalter :D

Einen guten Rutsch!

Re: Automation-Neuling braucht Hilfe beim erstellen von Regeln

Verfasst: 31. Dez 2019 23:22
von udo1toni
Der Dimmer sollte unmittelbar reagieren. Tut er das nicht, hast Du vermutlich Fehler in Deiner Konfiguration, die openHAB im normalen Ablauf behindern.

Typische Probleme sind, dass z.B. (viel) mehr Addons aktiv sind, als benötigt, oder dass Channel unnötigerweise an mehrere Items gekoppelt sind. Schau mal in Deine log-Dateien, dort steht, was openHAB zu welchem Zeitpunkt macht.
Wann eine Rule ausgeführt wird, kann man sichtbar machen, indem man einen Logbefehl einbaut.

Code: Alles auswählen

logInfo("rulename","die Rule wurde gestartet!")
erzeugt in openhab.log eine Zeile mit Datum, Zeit, Loglevel INFO, dem Loggernamen ...rulename und der Meldung - die Rule wurde gestartet!
INFO ist das normale loglevel. Man kann das Loglevel aber jederzeit während openHAB ausgeführt wird ändern, und zwar für jeden Logger getrennt. Man kann so z.B. mit logDebug() ziemlich ausführliche Informationen geben, die aber nicht geloggt werden, bis man den Loglevel auf DEBUG oder TRACE setzt. TRACE spielt aber für Rules keine Rolle, da es kein logTrace() gibt. Setzt man das level auf WARN, so werden auch keine logInfo() Zeilen mehr erzeugt.

Für die Steuerung von Items gibt es exakt 2 Befehle, Item.sendCommand(Befehl) sendet Befehl an Item (welches den Befehl an die verknüpften Addons weiterleitet), Item.postUpdate(Status) setzt den Status von Item auf Status, dies wird nicht an die Addons weitergeleitet.
Man denke daran, dass Items in openHAB die Status halten. Wenn Du einen Befehl sendest, schickt das Addon im Gegenzug den neuen Status, der wiederum im Item landet.
Welche Befehle man senden darf, hängt vom Itemtyp ab, also z.B. ON/OFF für Switch Items. Dimmer kennen ON/OFF/INCREASE und DECREASE sowie die Integerwerte 0 bis 100. Ob ein Dimmer INCREASE/DECREASE unterstützt, kommt aber auf den Dimmer an.

Ansonsten gibt es noch diverse andere Befehle, z.B. if() else für bedingte Verzweigungen oder auch switch() case für noch mehr Verzweigungen. Es kommt sehr darauf an, welches konkrete Problem Du gerade lösen musst. Leider gibt es keine spezielle Dokumentation für openHAB, allenfalls kann man in der xtend Doku nachschlagen, aber das ist auch nur eingeschränkt zu empfehlen, nicht jede Anweisung wird in openHAB unterstützt, nicht jede Schreibweise ist in openHAB erlaubt. Als beste Quelle kann ich nur immer wieder die vielen Codebeispiele im Forum nennen, und immer wieder die Empfehlung, keine Angst zu haben, Fragen zu stellen. Solange man freundlich bleibt, werden auch die Antworten freundlich sein ;)

Re: Automation-Neuling braucht Hilfe beim erstellen von Regeln

Verfasst: 6. Jan 2020 11:53
von wighdeas
Hi,

once again, vielen Dank - das hilft mir sehr weiter. Somit weiß ich nach was ich suchen muss - das macht das Leben deutlich leichter!n Ein kleines Problem tritt bei mir aber noch auf - wenn ich den o.g. Befehl/Code ausführe, kommt die Fehlermeldung:

Code: Alles auswählen

-bash: syntax error near unexpected token "Livingromm_TV_Mode","die Rlue wurde gestartet!"
Rule-Name sollte passen, da copy paste. Whats the matter?

Re: Automation-Neuling braucht Hilfe beim erstellen von Regeln

Verfasst: 9. Jan 2020 08:45
von seppy
Hi,
poste mal die gesamte rule! Dann können wir schauen wo der Syntaxfehler liegt ;-)

Grüße,
Seppy

Re: Automation-Neuling braucht Hilfe beim erstellen von Regeln

Verfasst: 11. Jan 2020 12:08
von wighdeas
Hi,

hier der Code:

Code: Alles auswählen

[12:05:21]openhabian@openhab:~$ logInfo("Livingroom_TV_Mode","die Rule wurde gestartet!")
-bash: syntax error near unexpected token `('

Re: Automation-Neuling braucht Hilfe beim erstellen von Regeln

Verfasst: 11. Jan 2020 12:18
von mbs
Das ist nicht deine Rule, sondern dein Log! ;-)

Re: Automation-Neuling braucht Hilfe beim erstellen von Regeln

Verfasst: 11. Jan 2020 19:04
von wighdeas
Danke mbs, ich bin heute wohl etwas verklatscht :D

hier die rule:

Code: Alles auswählen

rule "Livingroom_TV_Mode"
when
Item HeimkinoYamahaReceiverRXV479_Power changed from OFF to ON
then DimmerschalterWohnzimmer1LEVEL.sendCommand(20)
end

Re: Automation-Neuling braucht Hilfe beim erstellen von Regeln

Verfasst: 11. Jan 2020 19:51
von mbs
übersehen, die LogInfo kannst Du nicht in der Shell ausführen, das muss in die Regel.

so ist es von Udo gemeint:

Code: Alles auswählen

rule "Livingroom_TV_Mode"
when
	Item HeimkinoYamahaReceiverRXV479_Power changed from OFF to ON
then
	logInfo("Livingroom_TV_Mode", "die Rule wurde gestartet!")
	DimmerschalterWohnzimmer1LEVEL.sendCommand(20)
end