Openhab2 und Shell Script

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
tobidd
Beiträge: 14
Registriert: 10. Jul 2017 20:16

Openhab2 und Shell Script

Beitrag von tobidd »

Hallo liebe Gemeinde

Leider habe ich für meine Fehler nichts in der Forensuche gefunden, eventuell sehen ich den Wald vor lauter Bäumen nicht aber ich komme jetzt nicht weiter.
Folgendes Problem.
Ich habe Scripte zum Steuern und auslesen meiner Lüftungsanlage, diese laufen auf der Konsole unter dem nutzer openhabian sowei openhab ohne Fehler.

Aber in der Oberfläche (BasicUI) funktionieren sie leider nicht.
Es kommen immer folgende Fehlermeldungen im log:

Code: Alles auswählen

2017-07-10 20:04:15.915 [WARN ] [ome.core.thing.internal.ThingManager] - Cannot delegate command '0' for item 'lueftung_switch' to handler for channel 'exec:command:lueftungstatus:output', because no thing with the UID 'exec:command:lueftungstatus' could be found.
2017-07-10 20:04:15.926 [WARN ] [ome.core.thing.internal.ThingManager] - Cannot delegate command '0' for item 'lueftung_switch' to handler for channel 'exec:command:lueftungschalten:input', because no thing with the UID 'exec:command:lueftungschalten' could be found.
2017-07-10 20:04:15.929 [ItemCommandEvent          ] - Item 'lueftung_switch' received command 0
2017-07-10 20:04:15.940 [WARN ] [ome.core.thing.internal.ThingManager] - Cannot delegate update '0' for item 'lueftung_switch' to handler for channel 'exec:command:lueftungstatus:output', because no thing with the UID 'exec:command:lueftungstatus' could be found.
2017-07-10 20:04:15.945 [WARN ] [ome.core.thing.internal.ThingManager] - Cannot delegate update '0' for item 'lueftung_switch' to handler for channel 'exec:command:lueftungschalten:input', because no thing with the UID 'exec:command:lueftungschalten' could be found.
	
2017-07-10 20:05:16.419 [WARN ] [ome.core.thing.internal.ThingManager] - Cannot delegate command '0' for item 'lueftung_modus' to handler for channel 'exec:command:lueftungmodus1:output', because no thing with the UID 'exec:command:lueftungmodus1' could be found.
2017-07-10 20:05:16.422 [WARN ] [ome.core.thing.internal.ThingManager] - Cannot delegate command '0' for item 'lueftung_modus' to handler for channel 'exec:command:lueftungmodus_schalten1:input', because no thing with the UID 'exec:command:lueftungmodus_schalten1' could be found.

hier noch die anderen Dateien:
.thing

Code: Alles auswählen

Thing exec:command:lueftungschalten [ command="/bin/bash /home/openhabian/scripts/lueftung_schalten.sh %2$s", interval=0, timeout=20, autorun=false ]
Thing exec:command:lueftungstatus [ command="/bin/bash /home/openhabian/scripts/lueftung_schalten.sh", interval=10, timeout=30, autorun=true ]
Thing exec:command:lueftungmodus_schalten1 [ command="/bin/bash /home/openhabian/scripts/lueftung_modus_schalten.sh %2$s", interval=30, timeout=30, autorun=false ]
Thing exec:command:lueftungmodus1 [ command="/bin/bash /home/openhabian/scripts/lueftung_modus_schalten.sh", interval=30, timeout=30, autorun=true ]
.item

Code: Alles auswählen

String lueftung_switch "Status" <fan> [ "Switchable" ] { channel="exec:command:lueftungschalten:input", channel="exec:command:lueftungstatus:output", autoupdate="true" }
String lueftung_modus "Modus" <settings> { channel="exec:command:lueftungmodus_schalten1:input", channel="exec:command:lueftungmodus1:output", autoupdate="false" }
.sitemap

Code: Alles auswählen

sitemap lueftung label="Lüftung"
{
	Frame label="Lüftung Schalten" {
                Switch item=lueftung_switch mappings=[ "0"="Strom", "1"="Akku", "2"="Aus" ]
                Switch item=lueftung_modus mappings=[ "0"="Automatik", "1"="Manuell" ]
        }



}
Könntet ihr da mal bitte drüber schauen?
Eventuell findet einer von euch den Fehler.

Folgende Bindings habe ich im Einsatz:

Code: Alles auswählen

Exec Binding
binding-exec - 2.1.0


Exec Binding (1.x)
binding-exec1 - 1.10.0
Ich nutze Openhabian openHAB 2.1.0-1 (Release Build)

Ich würde mich über Hilfe von euch freuen.

Gruß Tobi

tobidd
Beiträge: 14
Registriert: 10. Jul 2017 20:16

Re: Openhab2 und Shell Script

Beitrag von tobidd »

Ich bin hier echt am verzweifeln, mal kurz erklärt, was ich eigentlich machen möchte.
Eventuell gibt es ja eine andere Lösung für mein Problem.

Ich möchte eigentlich nur meine Lüftung schalten und zwar gibt es da verschieden Modi:

Strom, Akku und Aus sowie Automatik und Manuell.

Also, im Hintergrund läuft auf einem anderen Rechner ein Cronjob, der alle 10 Minuten den Status der Lüftung überprüft und auf Grund von Feuchtesensoren die Lüftung an oder aus schaltet, wenn sie im AUTOMATIK Modus ist, wenn die Lüftung im MANUELLEN Modus ist, macht das Skript nichts.

Dazu habe ich mir zwei Skripte geschrieben.
Das erste Skript schaltet die Lüftung auf Strom oder Akku oder AUS, dazu übergebe ich dem Skript einen Parameter 0="Strom", 1="Akku", 2="Aus".
Wird das Skript ohne Parameter aufgerufen, dann gibt es den Aktuellen Lüftungsstatus zurück, also 0,1 oder 2.

Das zweite Skript schaltet den Modus der Lüftung zwischen Automatik und Manuell um wenn ein Parameter übergeben wird. (0="Automatik", 1="Manuell").
Wird kein Parameter übergeben, so liefert das Skript den aktuellen Modus der Lüftung zurück (0 oder 1).


Bild
Jetzt möchte ich gern, wie auf dem Bild zu sehen ist, mit Schaltern arbeiten und zwar möchte ich gern auf den Button drücken z.B. "Akku", dann soll auf Akku umgeschaltet werden. Ich möchte aber, das mir an Hand des Buttons auch gleich der aktuelle Zustand angezeigt wird.

Und das gleiche auch für den Modus.

Habt ihr eine Idee oder besser ein kleines Beispiel, wie ich das mit OH2 am besten umsetzten kann?

Gruß Tobi
Unbenannt.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

tobidd
Beiträge: 14
Registriert: 10. Jul 2017 20:16

Re: Openhab2 und Shell Script

Beitrag von tobidd »

Hat denn keiner eine Idee?
Oder ist das, was ich mit OH2 machen möchte, so garnicht machbar?
Hat wer eventuell eine andere Lösung für mein Problem?

Gruß Tobi

Benutzeravatar
seppy
Beiträge: 738
Registriert: 24. Sep 2015 20:25
Answers: 4
Wohnort: Bonn

Re: Openhab2 und Shell Script

Beitrag von seppy »

Hi Tobi,

arbeite Dich mal durch die Fehlermeldungen im log. Das erste was auffällt, ist das OH die Things die Du angelegt hast die ansprechen kann
because no thing with the UID 'exec:command:lueftungstatus' could be found
Das sollten wir als erstes lösen. Das Exec Addon funtioniert aber grundsätzlich?

Grüße,
Seppy
Homematic und HomematicIP über Raspberrymatic (RaspPi 4 4GB) mit 2x HMLAN. Steuerung und Visualisierung durch OpenHAB2 auf RaspPi in Hutschienengehäuse im Sicherungskasten. Rund 100 Aktoren/Sensoren

- Abgesichert durch APC USV
- Bewässerungssteuerung mit Hunter Magnetventilen (HM-LC-Sw4-DR)
- Beleuchtungssteuerung Innen und Aussen (HM-LC-Sw4-DR + HM-LC-SW1-FM + HMW-IO-12-SW7-DR)
- Rolladensteuerung mit Beschattungsautomatik über Temperaturdifferenzsensor (HM-LC-Bl1PBU-FM)
- Wetter und Unwetterinformationen von wunderground
- Benachrichtigung der Bewohner via Pushover
- Multimediawand und Dreambox Steuerung (HM-LC-SW1-FM)
- Heizungssteuerung mit Komfort und Energiesparfunktionen (HM-CC-RT-DN + HM-Sec-SC-2 + HMIP-eTRV-2)
- Werkstatt Kompressorsteuerung (HMW-IO-12-SW7-DR)
- Weihnachtsbeleuchtung außen
- Präsenzerkennung über Geolocation (iCloud Binding), iBeacon und WLAN (Unifi Binding)
- Philips HUE & Tasmota Devices (Tuya) Einbindung

tobidd
Beiträge: 14
Registriert: 10. Jul 2017 20:16

Re: Openhab2 und Shell Script

Beitrag von tobidd »

Hallo seppy

Danke für die Antwort.

Ich habe es jetzt hinbekommen, das ich schalten kann aber leider wird mir der aktuelle Schaltzustand nicht richtig angezeigt.
Ich kann die Lüftung auch seperat über eine php webseite schalten und das bekommt OH2 dann leider nicht mehr mit.

Hier meine Config:

.things

Code: Alles auswählen

Thing exec:command:lueftungschalten [ command="/bin/bash /var/lib/openhab2/script/lueftung_schalten.sh %2$s", interval=0, autorun=true ]
.items

Code: Alles auswählen

Switch lueftung_strom <poweroutlet>
Switch lueftung_send { channel="exec:command:lueftungschalten:run" }
String lueftung_send_args { channel="exec:command:lueftungschalten:input" }
String lueftung_send_out { channel="exec:command:lueftungschalten:output" }

Switch lueftung_akku <battery-100>
Switch lueftung_akku_send { channel="exec:command:lueftungschalten:run" }
String lueftung_akku_send_args { channel="exec:command:lueftungschalten:input" }
String lueftung_akku_send_out { channel="exec:command:lueftungschalten:output" }
.rules

Code: Alles auswählen

rule "Strom"
when
        Item lueftung_strom received command
then
        if(receivedCommand == ON){
                lueftung_send_args.sendCommand("0")
        }
        else{
                        lueftung_send_args.sendCommand("2")
        }

        while(lueftung_send.state != ON){
         Thread::sleep(500)
      }
      logInfo("Power_Plug", "Resuts are: " + lueftung_send_out.state )

end

rule "Akku"
when
        Item lueftung_akku received command
then
        if(receivedCommand == ON){
                lueftung_akku_send_args.sendCommand("1")
        }
        else{
                lueftung_akku_send_args.sendCommand("2")
        }

        while(lueftung_akku_send.state != ON){
         Thread::sleep(500)
      }
      logInfo("Power_Plug", "Resuts are: " + lueftung_akku_send_out.state )

end
.sitemap

Code: Alles auswählen

sitemap lueftung label="Lüftung"
{

Frame label="Lüftung schalten" {

        Switch item=lueftung_strom label="Strom" mappings=[ "ON"="ON", "OFF"="OFF" ]
        Switch item=lueftung_akku label="Akku" mappings=[ "ON"="ON", "OFF"="OFF" ]
}
}
Was auch noch sehr sehr schade ist, das ich jetzt zwei Switche benötige um den jeweiligen Zustand schalten zu können.
Oder geht das auch wie vorher geplant, mit einem Switch?

Ich hatte so etwas hier versucht
.sitemap (geht nicht)

Code: Alles auswählen

sitemap lueftung label="Lüftung"
{

Frame label="Lüftung schalten" {

        Switch item=lueftung_strom label="Strom" mappings=[ "0"="Strom", "1"="Akku", "2"="Aus" ]
       
}
}
Habt ihr da noch eine Idee oder einen Hinweis für mich?
PS: ICh bin ab morgen im Urlaub und erst wieder am 07.08.2017 da, also wenn ich ab morgen nicht mehr antworte, ist das kein Böser Wille von mir. :)

Antworten