Einlesen der Value Datei /sys/class/gpio/gpio12/value

Moderatoren: seppy, udo1toni

Antworten
Riddy
Beiträge: 3
Registriert: 9. Jan 2019 12:29

Einlesen der Value Datei /sys/class/gpio/gpio12/value

Beitrag von Riddy »

Hallo zusammen,
Ich bin quasi Neu :o hier , also Sorry für meine eventuelle unfachmänn/frau/liche Ausdrucksweise.
Zur Zeit betreibe ich eine Gartenbewässerung mit 3 Magnetventilen gesteuert von einem OrangePI
ohne Frontend (Bedienung nur von der Linux Konsole) und alles betrieben mit Python Scripten und Cron-Jobs.
Nun habe ich umgestellt auf den Raspberry PI 3 + mit OpenHabian2 um auch „Echte“ OH2 Schalter
Auf dem Iphone zu haben.
Das Bedienen der Relais funktioniert auch Super über die OH2 Oberfläche, vor allen begeistert micht
Das auf dem WEB-UI und IOS-APP alle Schalterstellungen immer nachgeführt ( synkronisiert ) werden.
Zur Zeit benutze ich das GPIO Binding um die Relais zu schalten.
Im Hintergrund werkeln noch mein Python- Scripte und Cron Jobs (Linux Cron ), jedoch ist es so , das
OH2 von dem allen nichts mitbekommt und somit sich die Schalter sich auch nicht bewegen weil OH
die Zustände in /sys/class/gpio/gpio12/value nicht überwacht.
Nun könnte man ja sagen, man macht eine Bedingung auf, die alle Minute gestartet wir
(OH“ time Cron Befehl alle Minute) dann prüft man alle 2 Sekunden ( sleep Befehl) und While Schleife
30 Mal den Zustand der Datei /sys/class/gpio/gpio12/value und sendet entsprechendes an OH2 per
Command Befehl.
Nun meine Frage :
Bin ich da auf dem Richtigen Weg ?
Wenn ja, wie kann man aus einen Rules script auf eine Datei zugreifen ?
Falls man sowas unter OH2 anders mach , bitte helft mir auch die Sprünge.
Ich finde zu dem Thema nichts in deutschsprachigen Internet.

Mit besten Grüssen Karsten

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

Re: Einlesen der Value Datei /sys/class/gpio/gpio12/value

Beitrag von seppy »

Hi,
da ich keine Ahnung habe was in der Datei steht, wäre ein Auszug interessant. Ich verstehe auch noch nicht ganz, was durhc welches Script bei Dir gemacht wird.
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

Benutzeravatar
udo1toni
Beiträge: 13854
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Einlesen der Value Datei /sys/class/gpio/gpio12/value

Beitrag von udo1toni »

Riddy hat geschrieben: 9. Jan 2019 14:55 Nun könnte man ja sagen, man macht eine Bedingung auf, die alle Minute gestartet wir
(OH“ time Cron Befehl alle Minute) dann prüft man alle 2 Sekunden ( sleep Befehl) und While Schleife
30 Mal den Zustand der Datei /sys/class/gpio/gpio12/value und sendet entsprechendes an OH2 per
Command Befehl.
Nun meine Frage :
Bin ich da auf dem Richtigen Weg ?
Nein, das ist keine gute Idee.

openHAB arbeitet eventbezogen, eine Rule sollte möglichst kurz laufen, sleep-Anweisungen sollten die absolute Ausnamhe sein, und dann auch nicht länger als wenige 100 mSec.
Falls man sowas unter OH2 anders mach , bitte helft mir auch die Sprünge.
Da Du ohnehin schon externe Scripte nutzt, wäre es das einfachste, Du sorgst dafür, dass diese Scripte den Zustand der Ausgägne aktiv an openHAB senden. Alternativ kannst Du natürlich die cron-Regeln in openHAB nachbilden und die Scripte lahmlegen.
Der erste Ansatz hat für Dich den Vorteil, dass Du wie gewohnt weiter arbeiten kannst.
Der zweite Ansatz hat den Vorteil, dass die Steuerung zentral über eine Software läuft, nicht verteilt über verschiedene Komponenten.

openHAB bietet vielfältige Möglichkeiten, von dummen Cron-Regeln über Kalenderunterstützung (z.B. Google Calendar) bis hin zu Lösungen, die die Wettervorhersage (und vor allem die Niederschlagsvorhersage) mit in die Beregnungssteurung einbeziehen, das ist letztlich eine Frage der eigenen Phantasie.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Riddy
Beiträge: 3
Registriert: 9. Jan 2019 12:29

Re: Einlesen der Value Datei /sys/class/gpio/gpio12/value

Beitrag von Riddy »

Ja Udo1Toni
du hast absolut Recht, mit dem was du geschrieben hast.

Von Beruf bin ich Maschinenbauer und das Programmieren fällt mit doch bisschen schwer :(
Aber so das eine oder Python-Script hab ich schon geschrieben, man hätte da einges besser machen können.
Aber ...... es funktioniert
So auch dieses Script um die aktuellen Schalterstände zu OH2 zurückzulesen.
Das Script starte ich per cron alle Minute , funktioniert astrein.
Wenn ich dann in OH mehr drin bin kann ich sowas später ja noch umstellen......


import RPi.GPIO as GPIO
import time
import urllib3

Channel1=12
Channel2=16
Channel3=20
Channel4=21

GPIO.setmode(GPIO.BCM)
GPIO.setup(Channel1, GPIO.OUT)
GPIO.setup(Channel2, GPIO.OUT)
GPIO.setup(Channel3, GPIO.OUT)
GPIO.setup(Channel4, GPIO.OUT)

GPIO.setwarnings(False)

Status1 = GPIO.input(Channel1)
Status2 = GPIO.input(Channel2)
Status3 = GPIO.input(Channel3)
Status4 = GPIO.input(Channel4)

http = urllib3.PoolManager()

for i in range(120):

if GPIO.input(Channel1) > Status1 :
Status1 = GPIO.input(Channel1)
resp = http.request('GET', 'http://127.0.0.1:8080/basicui/CMD?channel1=ON')

if GPIO.input(Channel1) < Status1 :
Status1 = GPIO.input(Channel1)
resp = http.request('GET', 'http://127.0.0.1:8080/basicui/CMD?channel1=OFF')

if GPIO.input(Channel2) > Status2 :
Status2 = GPIO.input(Channel2)
resp = http.request('GET', 'http://127.0.0.1:8080/basicui/CMD?channel2=ON')

if GPIO.input(Channel2) < Status2 :
Status2 = GPIO.input(Channel2)
resp = http.request('GET', 'http://127.0.0.1:8080/basicui/CMD?channel2=OFF')

if GPIO.input(Channel3) > Status3 :
Status3 = GPIO.input(Channel3)
resp = http.request('GET', 'http://127.0.0.1:8080/basicui/CMD?channel3=ON')

if GPIO.input(Channel3) < Status3 :
Status3 = GPIO.input(Channel3)
resp = http.request('GET', 'http://127.0.0.1:8080/basicui/CMD?channel3=OFF')

if GPIO.input(Channel4) > Status4 :
Status4 = GPIO.input(Channel4)
resp = http.request('GET', 'http://127.0.0.1:8080/basicui/CMD?channel4=ON')

if GPIO.input(Channel4) < Status4 :
Status4 = GPIO.input(Channel4)
resp = http.request('GET', 'http://127.0.0.1:8080/basicui/CMD?channel4=OFF')


time.sleep(1)


Besten Dank und Beste Grüsse Karsten

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

Re: Einlesen der Value Datei /sys/class/gpio/gpio12/value

Beitrag von seppy »

Hi,

ich würde auf externe Scripte in Deinem Fall verzichten und das http Binding nutzen. Schau Dir das mal an! Ansonsten kannst Du per Exec CMD Scripte ausführen.
Oder aber Du nutzt das GPIO Binding https://www.openhab.org/addons/bindings ... io-binding

PS: Conde bitte immer in die Code Klammern packen "</>" Knopf ;)

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

Riddy
Beiträge: 3
Registriert: 9. Jan 2019 12:29

Re: Einlesen der Value Datei /sys/class/gpio/gpio12/value

Beitrag von Riddy »

Hallo zusammen,

ich bedanke mich nochmal hier für eure Unterstützung,
ich hab mein Projekt fertig.
meine Punkte die ich wollte, habe ich hinbekommen
insbesondere auch durch Tonis Kommentare in englischen
Forum

Bei meinem Projekt spielten folgende Punkte eine Rolle:

1. Ähnlich zu Bedienen wie die Geräte von Gardena (R)
z.B. vorgegebenen Rythmus durch feste Programme

2. Einstellbare Startzeit und Beregungsdauer

3. Programme "verschließbar" bei Aktivität

4. Keine Kalender , kein Einrichten von Kalenderservern
oder gar Google Cal , nur Cron Jobs

5. Wiederherstellung der aktuellen Programmzustände bei Neustart

6. Alles auch von der Unix shell aus bedienbar.

Ich habe , das Projekt mal hier angehängt
vielleicht interessiert es den einen oder Anderen.

Bitte entschuldigt meine "schlosserartige" Progammierweise.

Mit besten Grüssen Karsten
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Antworten