FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Heimbastler am 05 Dezember 2015, 15:42:15

Titel: RPI_GPIO reading in state wandeln
Beitrag von: Heimbastler am 05 Dezember 2015, 15:42:15
..bitte reist mir nicht gleich den Kopf ab. Das ist wahrscheinlich so simpel. Aber ich komme seit Tagen einfach nicht voran:

Ich habe mehrere Fensterkontakte per Reed-Kontakte erfolgreich über das RPI_GPIO Modul als <reading> in FHEM bekommen. Nach nun 3 Tagen :(
Leider habe ich überhaupt keine Idee wie ich das weiter verarbeiten kann. Aus meinen bisherigen Versuchen denke ich das ich nur <state> weiterverarbeiten kann. Auch die Suche nach Beispielen macht es mir nicht greifbar.

Muss ich mit dem Umweg über Notify und Dummy gehen oder kann ich vorher schon ein reading in ein state wandeln über passende Attribute?

Ich hatte vergeblich mit stateFormat etliche Versuche gemacht, ohne Erfolg.
Anbei ein Screenshot von dem bisherigen RPI_GPIO Eingang
Danke für dieses tolle Forum. Ich hoffe ich habe es nicht mit meinem 1x1 verstopft... :'(
Titel: Antw:RPI_GPIO reading in state wandeln
Beitrag von: frank am 05 Dezember 2015, 16:02:39
ZitatLeider habe ich überhaupt keine Idee wie ich das weiter verarbeiten kann. Aus meinen bisherigen Versuchen denke ich das ich nur <state> weiterverarbeiten kann.
was hast du denn überhaupt vor?
Titel: Antw:RPI_GPIO reading in state wandeln
Beitrag von: Heimbastler am 05 Dezember 2015, 16:15:56
Hi Frank..

Sorry das ich das nicht gleich angegeben habe..

1. Die <states> der Fenster+Türen in dem Alarm-Modul als <Sensor> definieren.
2. Eine Übersicht über die Stati der Fenster+Türen in der Weboberfläche und später eine damit verknüfte simple rot/grün LED oder ein MP3-Infogong am Ausgang bevor ich das Haus verlasse.


Schritt für Schritt...das wird dauern  :o
Titel: Antw:RPI_GPIO reading in state wandeln
Beitrag von: frank am 05 Dezember 2015, 16:30:21
über zb ReadingsVal("gpio_pin16","Pinlevel","") kannst du den wert des readings auslesen. auch notifys oder doifs können auf beliebige readings/events reagieren. in denke auch, dass das alarmmodul entsprechend reagieren kann, kenne es aber nicht.
Titel: Antw:RPI_GPIO reading in state wandeln
Beitrag von: LuckyDay am 05 Dezember 2015, 17:08:49
als erstes wenn ich kein STATEhabe mappe(gestalte) ich mir das reading über stateFormat Beachte bitte -->es gibt zwei state STATE, das große siehst du nacher im Device

attr gpio_pin16 stateFormat Tor Pinlevel

und von low nach offen z.B.
attr gpio_pin16 eventMap low:offen high:zu
Titel: Antw:RPI_GPIO reading in state wandeln
Beitrag von: Heimbastler am 05 Dezember 2015, 17:16:45
Hi Frank..

danke für den Such-Tip/Hinweis. Habe dabei das hier gefunden:
http://forum.fhem.de/index.php?topic=40029.0 (http://forum.fhem.de/index.php?topic=40029.0)
Hier hat Alex/dogexan etwas ähnliches gesucht:
Zitatich hätte vielleicht noch erwähnen sollen dass, das Gerät woher das reading kommt das gleiche ist wo der STATE in den Internals angepasst werden soll.

Somit reicht ja ein einfaches:

attr Gerät stateFormat reading

Gruß Alex

Wenn ich aber das <reading> "Pinlevel" in <stateFormat> angebe wird der <State> nur beim setzen des Attributs auf den richtigen Wert gesetzt. Danach erfolgt kein Update des <State> :-\
Im Screenshot ist hier unter <State> "low" und im <Reading> "high" zu sehen...

VG
Alex
Titel: Antw:RPI_GPIO reading in state wandeln
Beitrag von: frank am 05 Dezember 2015, 17:21:34
in der raum übersicht wird es aktualisiert. in der detailsansicht werden die internals nur nach refresh der seite aktualisiert.
Titel: Antw:RPI_GPIO reading in state wandeln
Beitrag von: LuckyDay am 05 Dezember 2015, 17:32:42
Zitatinternals nur nach refresh der seite aktualisiert.

da, das ist so! richtig erkannt

edit: haha sorry frank, ich lösche meinen Beitrag jetzt nicht  :D
Titel: Antw:RPI_GPIO reading in state wandeln
Beitrag von: Heimbastler am 05 Dezember 2015, 17:35:32
Hi Hary..

das hat mich auch wieder ein bisschen weitergebracht:
Zitat von: fhem-hm-knecht am 05 Dezember 2015, 17:08:49
als erstes wenn ich kein STATEhabe mappe(gestalte) ich mir das reading über stateFormat Beachte bitte -->es gibt zwei state STATE, das große siehst du nacher im Device

attr gpio_pin16 stateFormat Tor Pinlevel

und von low nach offen z.B.
attr gpio_pin16 eventMap low:offen high:zu

habe aber nach dem ich die 2 Attribute abgesetzt habe immer noch die Abweichung zwischen <Reading> und <state>..siehe Anhang.
define gpio_pin11 RPI_GPIO 17
attr gpio_pin11 alias Fenster EG
attr gpio_pin11 direction input
attr gpio_pin11 eventMap low:offen high:zu
attr gpio_pin11 group GPIO
attr gpio_pin11 room Alarmanlage,Zentral
attr gpio_pin11 stateFormat Pinlevel


vielen Dank für die Hilfe bisher.. ::)
Titel: Antw:RPI_GPIO reading in state wandeln
Beitrag von: Heimbastler am 05 Dezember 2015, 17:37:16
Habe es auch mit refresh der jeweiligen Seiten probiert...leider ohne Erfolg..

:(
Titel: Antw:RPI_GPIO reading in state wandeln
Beitrag von: LuckyDay am 05 Dezember 2015, 17:39:16
aufstehen Fenster offnen und wieder zumachen, eventmap schlägst erst nach einem neuen Event zu
Titel: Antw:RPI_GPIO reading in state wandeln
Beitrag von: Heimbastler am 05 Dezember 2015, 17:54:23
Hi Harry..

exakt auch vorher so gemacht:
1. in Device-Detail-Ansicht kommt in <Reading> erst nach refresh das Richtige an - in <STATE> steht immer "low" - egal ob Fenster offen oder zu -> <Reading> funktioniert demnach...
2. auf der Device-Seite steht nix anderes ausser "low" nach Öffnen/Schließen + refresh

...muss ich das zusätzlich vlt. pollen?

VG
Alex
Titel: Antw:RPI_GPIO reading in state wandeln
Beitrag von: Heimbastler am 05 Dezember 2015, 18:22:32
ich habe das parallel noch mal mit einem Funk-Fensterkontakt geprüft:
define MAX_11acca MAX ShutterContact 11acca
attr MAX_11acca IODev cm
attr MAX_11acca alias Tür zum Garten
attr MAX_11acca devStateIcon opened:fts_window_1w_open@red closed:fts_window_1w@green
attr MAX_11acca eventMap opened:auf closed:zu
attr MAX_11acca group Keller
attr MAX_11acca room Alarmanlage,KG

--> hier funktioniert das <eventMap> tadellos und spuckt auf/zu aus (ohne refresh)

Demnach kann es nicht am <eventMap> liegen das es hier nicht klappt:
define gpio_pin11 RPI_GPIO 17
attr gpio_pin11 alias Fenster EG
attr gpio_pin11 direction input
attr gpio_pin11 eventMap low:offen high:zu
attr gpio_pin11 group GPIO
attr gpio_pin11 room Alarmanlage,Zentral
attr gpio_pin11 stateFormat Pinlevel

--> das <Reading> "Pinstate" wird nicht übergeben. Auch ein refresh bringt hier nichts... :'(

VG
Alex
Titel: Antw:RPI_GPIO reading in state wandeln
Beitrag von: frank am 05 Dezember 2015, 19:31:26
das liegt dann am modul. da musst du mit dem autor (siehe maintainer.txt) verhandeln.
Titel: Antw:RPI_GPIO reading in state wandeln
Beitrag von: Heimbastler am 05 Dezember 2015, 20:09:31
Danke Euch!!

Ich werde KlausW versuchen zu kontaktieren!
Ihr könnt Stolz darauf sein wie groß das alles hier geworden ist  :)

...ich berichte wie es ausgeht

VG
Alex
Titel: Antw:RPI_GPIO reading in state wandeln
Beitrag von: klausw am 06 Dezember 2015, 15:25:39
Hi Alex,

ich antworte gleich mal hier :)

Info am Rande:
wenn du Rasphian Jessie frisch als Image auf die SD KArte gebracht hast, dann musst du nix mit der /etc/rc.local machen.
sudo adduser fhem gpio
und nachfolgender Neustart sollten reichen.

In deiner rc.local habe ich den ersten Fehler gefunden: die Datei edge muss auch Schreibrechte für den User FHEM haben.

Ausserdem fehlt das Attribut:
attr gpio_pin11 interrupt both
das bei Pegelwechsel einen Interrupt auslöst, der die Readings aktualisiert.
Ohne diese Attribut werden die Readings nur mit set name readvalue, über das attribut poll_intervall oder neuladen der Detailseite aktualisiert.

Jetzt sollten sich die readings schon mal ändern, wenn sich der Pegel am Pin ändert.


Was ich seltsam finde ist, das du kein Reading state hast. Auch das high/low in STATE ist komisch (sollte on/off sein). Bist du sicher, das du das aktuelle Modul drauf hast?
Hast du mal "update" ausgeführt?
Hast du das Modul per Hand installiert?
Gibt es Fehler im logfile

attr <name> devStateIcon on:fts_window_1w_open@red off:fts_window_1w@green
funktioniert auf meiner Installation tadellos.
mit eventmap wäre ich generell vorsichtig, da es unliebsame Seiteneffekte haben kann.

STATE in den Moduldetails wird nicht aktualisiert (es ist ein Internal und nur die Readings werden aktualisiert)
In der Übersicht wird es aktualisiert (Das ist FHEM Philisophie und darauf habe ich keinen Einfluss)

Ebenso das Eventmap, das ist eine direkte FHEM Funktion, die in den Readings alt:neu austauscht.

Titel: Antw:RPI_GPIO reading in state wandeln
Beitrag von: Heimbastler am 07 Dezember 2015, 11:12:48
Hi Klaus...

danke für die schnelle Hilfe!!
Du hast in ALLEN Dingen recht!!


Nachdem ich das so gemacht habe wie Du es beschrieben hast ist alles sofort wie es sein sollte:

1. fehlende Rechte für Verzeichnis edge für Input in der rc.local:
#!/bin/sh # Input-Ports (Taster) for Port in 17 27
do
echo "$Port" > /sys/class/gpio/export
echo "in" >/sys/class/gpio/gpio${Port}/direction
chmod 660 /sys/class/gpio/gpio${Port}/direction
chmod 660 /sys/class/gpio/gpio${Port}/valueo
chmod 660 /sys/class/gpio/gpio${Port}/edge
chown -R fhem:root /sys/class/*
done
# Output-Ports (LED)
for
Port in 22 23 24 25
do
echo "$Port" > /sys/class/gpio/export
echo "out" >/sys/class/gpio/gpio${Port}/direction
echo "0" >/sys/class/gpio/gpio${Port}/value
chmod 660 /sys/class/gpio/gpio${Port}/direction
chmod 660 /sys/class/gpio/gpio${Port}/value
chown -R fhem:root /sys/class/*
done


2. Attribut für interrupt gesetzt auf:
attr gpio_pin11 interrupt both

---> dann lief schon alles wie geplant...nur das mein Pinlevel falsch herum angezeigt wurde

3. dann noch die beiden wieder entfernt:
attr gpio_pin11 stateFormat Pinlevel
attr gpio_pin11 eventMap low:offen high:zu

4. und die hübsche Fenster-Ansicht mit:
attr gpio_pin11 devStateIcon on:fts_window_1w_open@red off:fts_window_1w@green

In der EventMap wird alles brav angezeigt...keine Fehler!!
;D Hast mein WE doch noch gerettet...DANKE!!

VG
Alex