GPIO automatisch schalten

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Andi82
Beiträge: 6
Registriert: 14. Aug 2018 07:09
Answers: 0

GPIO automatisch schalten

Beitrag von Andi82 »

Hallo zusammen,

ich habe mein erstes Openhab installiert und habe eine basicui mit 4 Schaltern angelegt, mit denen ich GPIOS ein- und ausschalten kann.

Nun hätte ich gerne, dass die GPIOS nach einem Zeitplan automatisch ein und ausgehen.
Z.B. GPIO 6 von 20:00 21:30
GPIO 20 von 20:00 - 20:30
GPIO 19 von 20:30 - 21:00
GPIO 26 von 21:00 - 21:30
Allerdings sollen die Schalter ihr Funktion behalten, so dass ich außerhalb des Zeitplans trotzdem die GPIOS schalten kann.

Ich hab das mit einem klassischen crontab probiert, mit dem ich das auch schon an einem anderen Raspberry am laufen habe. Nur klappt das hier nicht. Dann habe ich es mit den Rules probiert. Aber das bekomme ich auch nicht hin. Vielleicht kann mir jemand helfen?

Das habe ich bisher gemacht und funktioniert:
sudo nano /etc/openhab2/items/home.items

Code: Alles auswählen

Switch  Pumpe  "Pumpe" { gpio="pin:6" }
Switch  grosseWiese  "Große Wiese" { gpio="pin:20" }
Switch  kleineWiese  "kleine Wiese" { gpio="pin:19" }
Switch  Pflanzen  "Pflanzen" { gpio="pin:26" }
sudo nano /etc/openhab2/sitemaps/home.sitemap

Code: Alles auswählen

sitemap default label="Gartenbewässerung"
{
  Switch item=Pumpe
  Switch item=grosseWiese       icon="rain"
  Switch item=kleineWiese       icon="rain"
  Switch item=Pflanzen          icon="rain"
}
Das habe ich probiert, klappt aber nicht:
sudo crontab -e

Code: Alles auswählen

# Pumpe
00 20 * * * echo "0" > /sys/class/gpio/gpio6/value
30 21 * * * echo "1" > /sys/class/gpio/gpio6/value
# große Wiese
00 20 * * * echo "0" > /sys/class/gpio/gpio20/value
30 20 * * * echo "1" > /sys/class/gpio/gpio20/value
# kleine Wiese
30 20 * * * echo "0" > /sys/class/gpio/gpio19/value
00 21 * * * echo "1" > /sys/class/gpio/gpio19/value
# Pflanzen
00 21 * * * echo "0" > /sys/class/gpio/gpio26/value
30 21 * * * echo "1" > /sys/class/gpio/gpio26/value
Alternativ habe ich das noch probiert (müsste halt noch ausgebaut werden wenn der erste Schritt mal funktioniert):
sudo nano /etc/openhab2/rules/home.rules

Code: Alles auswählen

sudo nano /etc/openhab2rule "Pflanzen"
when
        Time cron "0 0 20 1/1 * ? *"
then
        sendCommand("gpio26",OFF)
end

hr3
Beiträge: 210
Registriert: 23. Mai 2017 21:41
Answers: 0

Re: GPIO automatisch schalten

Beitrag von hr3 »

Code: Alles auswählen

rule "20:00"
when
        Time cron "0 0 20 ? * * *"
then
        postUpdate(Pumpe,ON)
        postUpdate(grosseWiese,ON)
end

rule "20:30"
when
        Time cron "0 30 20 ? * * *"
then
        postUpdate(grosseWiese,OFF)
        postUpdate(kleineWiese,ON)
end

rule "21:00"
...

Andi82
Beiträge: 6
Registriert: 14. Aug 2018 07:09
Answers: 0

Re: GPIO automatisch schalten

Beitrag von Andi82 »

Danke für die schnelle Antwort.
Habe es mit Testweise veränderten Uhrzeiten probiert. Aber es passiert immer noch nichts.

Muss ich noch etwas beachten? Muss vielleicht der Dateiname der .rules Datei einen bestimmten Namen haben, oder kann es an irgendwelchen Rechten liegen?
Muss man nach jeder Änderung den Dienst "sudo systemctl restart openhab2.service" neu starten?

Muss das eigentlich in die Datei? Im Moment ist das nicht drin.

Code: Alles auswählen

import org.openhab.core.library.types.*
import org.openhab.core.persistence.*
import org.openhab.model.script.actions.*
import org.java.math.*
import org.joda.time.*

hr3
Beiträge: 210
Registriert: 23. Mai 2017 21:41
Answers: 0

Re: GPIO automatisch schalten

Beitrag von hr3 »

nein, nein, nein, ...
Wenn das manuelle schalten über die Sitemap funktioniert, muß es auch über die Rule funktionieren.
Die Datei kann einen beliebigen Namen mit der Erweiterung .rules haben und muß in der rules-Bibliothek stehen.
Die Import-Anweisungen werden nicht benötigt.
Poste bitte deine kompletzte rules-Datei und die oH-Log-Einträge ab dem Moment der Rules-Änderung.

Andi82
Beiträge: 6
Registriert: 14. Aug 2018 07:09
Answers: 0

Re: GPIO automatisch schalten

Beitrag von Andi82 »

Ok, dank dieser Log ist mir aufgefallen, dass die Uhrzeit nicht stimmt. Es muss an der Zeitzone liegen. Sie geht genau 2 Stunden nach.
Daher habe ich die .rules Datei entsprechend angepasst, also auch um 2 Stunden zurück um einfach testen zu können ob es schaltet. Um die Uhr kümmer ich mich anschließend.
Trotzdem geht es nicht.
Bei der Datei habe ich mich genau an Dein Schema gehalten. Hab die Zeit probeweise auch mal nach cronmaker.com eingegeben, ändert aber nichts.

Das steht aktuell in rules:

Code: Alles auswählen

rule "20:00"
when
        Time cron "0 53 8 ? * * *"
then
        postUpdate(Pflanzen,ON)
        postUpdate(grosseWiese,ON)
end
Das ist dieLog, das ich anschließend gelesen habe:

2018-08-14 08:41:41.701 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'home.sitemap' has errors, therefore ignoring it: [1,23]: mismatched input 'home' expecting RULE_STRING

2018-08-14 08:42:01.406 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'home.sitemap'
2018-08-14 08:42:04.309 [WARN ] [sitemap.internal.SitemapProviderImpl] - Filename `home.sitemap` does not match the name `default` of the sitemap - please fix this as you might see unexpected behavior otherwise.
2018-08-14 08:42:44.504 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'home.rules'
2018-08-14 08:53:01.230 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'home.rules'


Update:
In der BacicUi werden die Schalter visuell geschaltet. Aber die GPIOs werden nicht aktiviert, also kein Strom. Wenn ich die Schalter dann manuell aus und wieder an mache, sind die GPIOs aktiv.
Vielleicht hilft das?

Update2:
Statt postUpdate habe ich wieder sendCommand eingetragen. Jetzt schaltet das GPIO. Dann bleibt noch die Uhr :? Aber das ist ein anderes Thema

Vielen Dank für die Hilfe. Hab schon wieder was gelernt.

hr3
Beiträge: 210
Registriert: 23. Mai 2017 21:41
Answers: 0

Re: GPIO automatisch schalten

Beitrag von hr3 »

https://www.openhab.org/addons/bindings/gpio1
When activelow is set to no (or omitted) the pins behaves normally: output pins will be set high on ON command and low on OFF, input pins will generate OPEN event when they are high and CLOSED when are low. However, if activelow is set to yes the logic is inverted: when ON command is sent to output pin it will be set to low, on OFF command - to high. Input pins will generate OPEN event when they are low and CLOSED event on high.
Das war deine Basis-Aussage
Das habe ich bisher gemacht und funktioniert:
Danach funktioniert das schalten per Sitemap. Jetzt aber anscheinend doch nicht.

Dann bitte ganz konkret:
Wenn ich die Schalter dann manuell aus und wieder an mache, sind die GPIOs aktiv.
Was meinst du mit Schalter und was mit GPIO?

Was steht in events.log?

Deine 4 Items sind nach wie vor vom Typ Switch?

Das GPIO-Binding ist installiert?

Welche oH-Version nutzt du und diese läuft auf einem Raspi?

hr3
Beiträge: 210
Registriert: 23. Mai 2017 21:41
Answers: 0

Re: GPIO automatisch schalten

Beitrag von hr3 »

hc_405.jpg
hc_406.jpg
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Andi82
Beiträge: 6
Registriert: 14. Aug 2018 07:09
Answers: 0

Re: GPIO automatisch schalten

Beitrag von Andi82 »

Ich habe mich vermutlich nicht richtig ausgedrückt. Ist als Anfänger wohl auch nicht so einfach :roll:

Ich meinte es so: Das Schalten per Sitemap funktioniert, wenn ich selbst mit der Maus drauf klicke. Wenn die .rules Datei aktiv wurde, wurden zwar automatisch, ohne mein Zutun in der Sitemap die Schalter aktiviert. Aber die GPIOs (die physikalischen PINs auf dem Raspberry) waren noch aus.
Das GPIO Binding ist installiert und in der Items Datei eingetragen.
Hoffentlich habe ich es jetzt richtig ausgedrückt.
Wie liest man die oH Version aus? Installiert habe ich es aber letzte Woche. Ist also ganz frisch. Update: beim Reboot sieht man es: 2.3.0.-1

Eigentlich ist mein ursprünglicher Wunsch erfüllt. Aber mir fällt gerade ein, dass wenn keine Bewässerung nötig ist, muss man es ja deaktivieren können. Kann man auf der Sitemap einen Schalter hinzufügen, mit dem alle Regeln auf einmal deaktiviert werden
Ist das möglich und hast Du einen Tipp (falls Du noch Nerven für mich übrig hast)?

hr3
Beiträge: 210
Registriert: 23. Mai 2017 21:41
Answers: 0

Re: GPIO automatisch schalten

Beitrag von hr3 »

Code: Alles auswählen

rule "20:00"
when
    Time cron "0 53 8 ? * * *"
then
    if (itemAuto.state == ON) {             
        sendCommand(Pflanzen,ON)
        sendCommand(grosseWiese,ON)}
end

Andi82
Beiträge: 6
Registriert: 14. Aug 2018 07:09
Answers: 0

Re: GPIO automatisch schalten

Beitrag von Andi82 »

Es klappt. Vielen Dank!!!
Jetzt noch die Uhr und gut ist. Jetzt muss ich aber erstmal für 20 Minuten weg. Dann probiere ich noch ein wenig.

Antworten