Das Projekt realisiert die Fernabfrage der ELV Raumklimastation RS500
über SSH
Der Code ist in C geschrieben.
Die Klimastation RS500 ist über USB an einem Raspbery Pi angeschlossen.
Die 8 Sensoren können über einen SSH Client (z.B. Putty, Bild1)
abgefragt werden.
Auch über das "APP Raspberry SSH" kann vom Smartphon aus die
Klimastation abgefragt werden (siehe Bild 2).
Für jeden der Sensoren kann eine individueller Text vergeben werden.
Das Codebeispiel kann auf eigene Verantwortung genutzt, aber auch für
eigene Projekte oder Erweiterungen verwendet werden.
https://www.elv.de/elv-raumklimastation-rs500-inkl-5-sensoren-messwertespeicher-und-pc-auswertesoftware.html
gutes Gelingen!
wtf?! schrieb:> Will ich wirklich wissen warum du rootrechte brauchst um mit einem> usb> Gerät zu reden? :-\
Weil die HID Library auf die Hardware zugreift.
Versuche ein einem Programm auf eine IO-Pin zuzugreifen. Ohne Root
Rechte wird es nicht gehen.
Aber man kein eine eigenen User (z.B. rk) angelegen, der nur diese
Programm ausführen darf und sonst gar nichts.
In der Datei /etc/sudoers einfügen:
# User privilege specification
root ALL=(ALL:ALL) ALL
rk ALL=(ALL) NOPASSWD: /home/rk/rk
siehe auch: https://de.wikipedia.org/wiki/SudoACHTUNG : fehlerhafte Einträge könnten das System zerstören !
Besser ist es das Programm sudoedit zu benutzen. Dieses überprüft die
Datei sudors auf Fehler, bevor sie gespeichert werden kann.
GEKU schrieb:> Aber man kein eine eigenen User (z.B. rk) angelegen, der nur diese> Programm ausführen darf und sonst gar nichts
ERGÄNZUNG:
In /home/rk nur die ausführende Datei rk kopieren.
Es kann im APP Raspberry SSH nur mehr sudo ./rk aufgerufen werden.
GEKU schrieb:> wtf?! schrieb:>> Will ich wirklich wissen warum du rootrechte brauchst um mit einem>> usb>> Gerät zu reden? :-\>> Weil die HID Library auf die Hardware zugreift.>> Versuche ein einem Programm auf eine IO-Pin zuzugreifen. Ohne Root> Rechte wird es nicht gehen.
Das macht man über udev-Regeln. Im Prinzip so:
Beitrag "Linux USB-Rechte verändern(USBProg)"
Mario M. schrieb:> Das macht man über udev-Regeln. Im Prinzip so: Beitrag "Linux USB-Rechte> verändern(USBProg)"
Danke für den Tipp!
Kann dann jedes Programm mit USB-Griff ohne SU Rechte aufgerufen
werden?
user rk mit Homeverzeichnis anlegen
Programm rk ins Homeverzeichnis kopieren
"sudo visodu" aufrufen.
Zeile "rk ALL=(ALL) NOPASSWD: /home/rk/rk" hinzufügen.
Das Programm kann jetzt mit "sudo ./rk" ohne Eingabe eines Passwortes
aufgerufen werden.
GEKU schrieb:> Kann dann jedes Programm mit USB-Griff ohne SU Rechte aufgerufen> werden?
Ja. Der Benutzer, unter dem das Programm ausgeführt wird, muss in der
entsprechenden Gruppe sein und die Gruppenrechte des USB-Geräts müssen
lesen und schreiben zulassen.
Mario M. schrieb:> Der Benutzer, unter dem das Programm ausgeführt wird, muss in der> entsprechenden Gruppe sein und die Gruppenrechte des USB-Geräts müssen> lesen und schreiben zulassen
Danke!
Werde ich ausprobieren.
Ich habe gesehen, dass die Vendor ID und die Produkt ID angegeben
werden muss ,
also kann ich davon ausgehen, dass sich die Freischaltung nur auf die
Klimazentrale bezieht.
Danke, da habe ich wieder etwas dazu gelernt.
Sollte der Fehler "error while loading shared libraries:
libhidapi-libusb.so.0: cannot open shared object file: No such file or
directory" auftreten, dann fehlt libhidapi-libusb0
sudo apt install libhidapi-libusb0
neue Funktionen in 2v0 :
- steigende Temperaturen und/oder fallende Temperaturen können mit
Shell-Scripts, sowie mit in C und/oder Python geschriebene Programme
gekoppelt werden, um z.B. GPIO's des Raspberry PI zu setzten oder
rückzusetzen (siehe Beispiel heizung.py)
- steigende und fallende Temperaturen können simuliert werden, um die
Steuerungen zu überprüfen (siehe klima-server.ini Section DEBUG)
- Schlüssel für Temperaturen können nach tu bzw, td beliebig bezeichnet
werden (z.B. tu01, tua, td1, td_a), sowie mit ';' (z.B. ;tu05)
auskommentiert werden.
Die Schlüssel sollten nach aufsteigenden Temperaturen sortiert werden.
_Beispiel für aktivieren der Heizung wenn Temperatur auf 20 Grad Celsius
gefallen ist_ :
td22 = 20|heizung.py ein
_Beispiel für deaktivieren der Heizung wenn Temperatur auf 25 Grad
Celsius gestiegen ist_ :
tu27 = 25|heizung.py aus
Simulation :
[DEBUG]
sensor = 1
temp_min = 20
temp_max = 30
temp_diff = -0.3 ;(0.. schaltet Simulation aus, - simuliert fallende
Temperaturen)
Temperaturen können mit einer Kommastelle '.' definiert werden.
(Beispiel tu5 = 21.5)