OpenHAB und Regeln??

openHAB - open Home Automation Bus

Moderator: Co-Administratoren

Antworten
Benutzeravatar
Blackeye
Beiträge: 547
Registriert: 15.08.2015, 16:33
Hat sich bedankt: 2 Mal

OpenHAB und Regeln??

Beitrag von Blackeye » 23.12.2016, 09:34

Hallo zusammen,

Ich habe in OpenHAB ein paar Regeln. Ein paar dieser Regeln laufen und ein paar nicht. Ein schönes Beispiel ist meine Nacht Regel.

Diese Regel funktioniert nicht:

Code: Alles auswählen

rule "nacht_an"
when
    Time cron "0 0 22 * * ?"
then
    sendCommand(nacht, ON)
end

Diese aber schon:

Code: Alles auswählen

rule "nacht_aus"
when
    Time cron "0 0 6 * * ?"
then
    sendCommand(nacht, OFF)
end

Da sich die Regeln wirklich nur durch die Uhrzeit unterscheiden, verstehe ich das Problem nicht. Kann es sein, das eine andere Regel diese blockiert?

Danke


Gesendet von iPhone mit Tapatalk

Benutzeravatar
Blackeye
Beiträge: 547
Registriert: 15.08.2015, 16:33
Hat sich bedankt: 2 Mal

Re: OpenHAB und Regeln??

Beitrag von Blackeye » 28.12.2016, 18:38

Hi,

kennt sich hier wirklich keiner aus? Ich habe jetzt noch probiert über die RULE Engine eine Regel zu kreieren. Hier leider auch ohne Erfolg.
Wie muss in in der RULE Engine die CRON einstellen.

Danke

Benutzeravatar
Blackeye
Beiträge: 547
Registriert: 15.08.2015, 16:33
Hat sich bedankt: 2 Mal

Re: OpenHAB und Regeln??

Beitrag von Blackeye » 02.01.2017, 19:23

Hi, eine weitere Frage. Hat einer eine Idee wieso der 2 Sendbefehl nicht funktioniert?

Code: Alles auswählen

rule "Amazon" when
    Item Harmony_Hub changed
then
    var String HarmonyState = Harmony_Hub.state.toString()
    if (HarmonyState == "Amazon")
    {
    sendHttpGetRequest("http://192.168.188.74/config/xmlapi/statechange.cgi?ise_id=64010&new_value=1")
    sendHttpGetRequest("http://192.168.188.30/web/powerstate?newstate=0")
    sendHttpGetRequest("http://192.168.188.74/config/xmlapi/statechange.cgi?ise_id=63013&new_value=Amazon")
    }
end

Der Rest funktioniert...




Gesendet von iPhone mit Tapatalk

Benutzeravatar
RoRo42
Beiträge: 9
Registriert: 17.11.2014, 10:35
Danksagung erhalten: 2 Mal

Re: OpenHAB und Regeln??

Beitrag von RoRo42 » 08.01.2017, 14:38

Blackeye hat geschrieben: Diese Regel funktioniert nicht:

Code: Alles auswählen

    sendCommand(nacht, ON)
Ich habe etwas ähnliches implementiert und bei mir funktioniert das. Allerdings habe ich "ON" und "OFF" gequoted:

Code: Alles auswählen

sendCommand(SW_FlurEG_Wandlampe, "ON")
Warum sich bei Dir ON und OFF unterschiedlich verhalten, kann ich Dir aber nicht sagen.

Zwecks Debugging empfehle ich aber, immer erstmal einen Log-Aufruf vor das sendCommand zu setzen:

Code: Alles auswählen

logInfo("Licht", "Flur EG Wandlampe an")
sendCommand(SW_FlurEG_Wandlampe, "ON")
Dann weißt Du nach einem Blick ins Log immerhin, ob der cron schief gelaufen ist oder das sendCommand().

Ansonsten habe ich mir eine Test-Taste als Item implementiert:

Code: Alles auswählen

Switch Test_Event "Test_Event"
und dann in der Sitemap:

Code: Alles auswählen

Switch item=Test_Event mappings=[ON="Taste"]
Diese Taste kann man dann als Alternative zum Cron definieren:

Code: Alles auswählen

rule "Flur-Licht aus"
when
        // Item Test_Event received command or
        Time cron "0 0 22 * * ?" // 22:00 Uhr
then
Zum Aktivieren des Test_Event einfach die Kommentarzeichen vor der Zeile entfernen und wenn Du dann die Taste drückst, wird das selbe sendCommand() ausgeführt, als wäre es 22 Uhr.

Dabei natürlich immer das Log im Auge behalten, dann solltest Du rausfinden können, was da schief läuft.

Gruß
Roland

Benutzeravatar
eiGelbGeek
Beiträge: 979
Registriert: 24.07.2014, 17:46
Wohnort: Ruhrpottrandgebiet
Hat sich bedankt: 105 Mal
Danksagung erhalten: 19 Mal

Re: OpenHAB und Regeln??

Beitrag von eiGelbGeek » 19.03.2017, 05:31

Versuche es mal so ....

Code: Alles auswählen

rule "nacht_an"
when
    Time cron "0 0 22 * * ?"
then
    nacht.sendCommand(ON)
end
Zum Debuggen den Time Cron einfach mal z.b. auf alle 5 Minuten stellen und schauen was tail:log in der Konsole loggt ....
Nur weil es nicht geht, muss es nicht kaputt sein ^^

Apple for Work, Linux for Network, iOS for Mobility and still Windows for Solitaire

Benutzeravatar
eiGelbGeek
Beiträge: 979
Registriert: 24.07.2014, 17:46
Wohnort: Ruhrpottrandgebiet
Hat sich bedankt: 105 Mal
Danksagung erhalten: 19 Mal

Re: OpenHAB und Regeln??

Beitrag von eiGelbGeek » 19.03.2017, 05:42

Blackeye hat geschrieben:Hi, eine weitere Frage. Hat einer eine Idee wieso der 2 Sendbefehl nicht funktioniert?

Code: Alles auswählen

rule "Amazon" when
    Item Harmony_Hub changed
then
    var String HarmonyState = Harmony_Hub.state.toString()
    if (HarmonyState == "Amazon")
    {
    sendHttpGetRequest("http://192.168.188.74/config/xmlapi/statechange.cgi?ise_id=64010&new_value=1")
    sendHttpGetRequest("http://192.168.188.30/web/powerstate?newstate=0")
    sendHttpGetRequest("http://192.168.188.74/config/xmlapi/statechange.cgi?ise_id=63013&new_value=Amazon")
    }
end

Der Rest funktioniert...




Gesendet von iPhone mit Tapatalk
Kann keinen Fehler entdecken .... aber mal ne Frage .... warum nutzt du noch CCU Systemvariablen ?? und nicht alles in OH ? Man kann ja OH Item dafür nutzen .... ich habe meine CCU nun komplett leer ... alles rüber sortiert .... das einzige was noch drin ist sind paar Direkt Verknüpfungen und die Anwensendheitsvariable die bei Reboot mit ne Telegram Nachricht schickt ... das die CCU Rebootet wurde ;-)

Der Vorteil an OpenHAB Items .... nie wieder Zeichensatzprobleme :-)

Wenn du den 2ten Befehl im Browser aufrufst , dann funktioniert er ? *doofe frage, aber man muss ja alles ausschliessen* Hat der Aufruf vielleicht ein ziemlich lange Response Zeit? dann kommt es scheinbar hin und wieder zu Fehler mit sendHttp....

Als WorkARound habe ich für mich folgendes genommen.... Ich passe es mal an deinen Link an ;)

In der Rule:

Code: Alles auswählen

executeCommandLine("/opt/openhab2/conf/scripts/power_state_0.sh")
Im SH Script:

Code: Alles auswählen

#!/bin/bash

#power_state_0

curl "http://192.168.188.30/web/powerstate?newstate=0 > /dev/null"
Das Script in OPENHABPFAD/conf/script ablegen und mit chmod +x power_state_0.sh ausführbar machen ...

PS: Du kannst natürlich auch alle 3 Aufrufe ins Script schreiben....

Code: Alles auswählen

#!/bin/bash

#Amazon

curl "http://192.168.188.74/config/xmlapi/statechange.cgi?ise_id=64010&new_value=1 > /dev/null"
curl "http://192.168.188.30/web/powerstate?newstate=0 > /dev/null"
curl "http://192.168.188.74/config/xmlapi/statechange.cgi?ise_id=63013&new_value=Amazon > /dev/null"
Nur weil es nicht geht, muss es nicht kaputt sein ^^

Apple for Work, Linux for Network, iOS for Mobility and still Windows for Solitaire

Antworten

Zurück zu „openHAB“