[GELÖST] Virtuelle GPIO funktioniert nicht mit NOTIFY

Begonnen von thgorjup, 06 Juli 2018, 14:37:29

Vorheriges Thema - Nächstes Thema

thgorjup

Hallo,

ich möchte die GPIO Schnittstelle verwenden um einen EVENT auszulösen.
Mit folgendem Script simuliere ich einen Tastendruck:


#!/bin/bash

if [ ! -d /sys/class/gpio/gpio23 ]; then
      echo 23 > /sys/class/gpio/export
      echo out > /sys/class/gpio/gpio23/direction
fi
echo 1 > /sys/class/gpio/gpio23/value
sleep 10
echo 0 > /sys/class/gpio/gpio23/value


In FHEM habe ich folgendes konfiguriert:

define GPIO_23 RPI_GPIO 23
attr GPIO_23 devStateIcon on:on off:off
attr GPIO_23 direction output


Das Reading "Pinlevel" ändert sekündlich den Timestamp und wenn ich ich das Script ausführe, verändert sich der Pinlevel von "low" zu "high" und noch 10 Sekunden wieder zurück.

Aber wie kann ich jetzt ein DOIF oder NOTIFY darauf verwenden?

Das habe ich versucht um z.B. eine Lampe blinken zu lassen.

define not_GPIO23 notify GPIO_23:Pinlevel.* { fhem ("set HUEDevice1 blink 10") }


Aber es passiert nichts nach Ausführung des Scripts.
Was fehlt hier bitte?

Danke und Gruß
Thomas



FHEM auf Ubuntu 18.04LTS, 2x nanoCUL, JeeLink, nanoPIR, MQTT, ESP-Easy, HUE.
Sensoren+Aktoren: HM, IT, Lacrosse, Multitrade-PIR, VU+, Somfy

frank

FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

thgorjup

Nein, das ist ja das Problem. Ich habe auch schon "event-on-update-reading" und "event-on-change-reading" bezogen auf "Pinlevel" ausprobiert.
Aber ich denke das kann nicht gehen, da der Timestamp des Pinlevel ständig mitläuft.

Ich weiß nicht, wie ich es hinbekommen soll den "state" des GPIO_23 zu ändern.
FHEM auf Ubuntu 18.04LTS, 2x nanoCUL, JeeLink, nanoPIR, MQTT, ESP-Easy, HUE.
Sensoren+Aktoren: HM, IT, Lacrosse, Multitrade-PIR, VU+, Somfy

Otto123

ZitatDas Reading "Pinlevel" ändert sekündlich den Timestamp und wenn ich ich das Script ausführe, verändert sich der Pinlevel von "low" zu "high" und noch 10 Sekunden wieder zurück.

define not_GPIO23 notify GPIO_23:Pinlevel.* { fhem ("set HUEDevice1 blink 10") }

Aber es passiert nichts nach Ausführung des Scripts.
Was fehlt hier bitte?
1. kürzer und funktionsgleich wäre das : set HUEDevice1 blink 10
2. Wenn es sekündlich eine Änderung gibt welchen Sinn macht es dann ein anderes Gerät in 10 sec blinken zu versetzen?

Wie genau hast Du die event-on Attribute bestückt, gib da mal ein list von  GPIO_23.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

thgorjup

Bitte sehr:


Internals:
   CFGFN     
   DEF        23
   GPIO_Basedir /sys/class/gpio
   GPIO_Nr    23
   NAME       GPIO_23
   NR         910
   STATE      off
   TYPE       RPI_GPIO
   WiringPi_gpio /usr/bin/gpio
   OLDREADINGS:
   READINGS:
     2018-07-06 15:28:18   Pinlevel        low
     2018-07-06 00:34:32   state           off
   fhem:
     interfaces switch
Attributes:
   devStateIcon on:on off:off
   direction  output


Mein Ziel ist ja, dass ich per Script den Status auf "on" und nach 10 Sekunden wieder auf "off" wechseln kann.

FHEM auf Ubuntu 18.04LTS, 2x nanoCUL, JeeLink, nanoPIR, MQTT, ESP-Easy, HUE.
Sensoren+Aktoren: HM, IT, Lacrosse, Multitrade-PIR, VU+, Somfy

thgorjup

Ein DOIF funktioniert genauso wenig.


define doif_GPIO23 DOIF ( [GPIO_23:Pinlevel] eq "high" ) ( set HUEDevice1 blink 10 )
FHEM auf Ubuntu 18.04LTS, 2x nanoCUL, JeeLink, nanoPIR, MQTT, ESP-Easy, HUE.
Sensoren+Aktoren: HM, IT, Lacrosse, Multitrade-PIR, VU+, Somfy

thgorjup

Ok, ich glaube ich habe die Lösung gefunden. K.A.ob das so gewollt ist, aber es funzt zumindest.


defmod GPIO_23 RPI_GPIO 23
attr GPIO_23 devStateIcon high:on low:off
attr GPIO_23 direction output
attr GPIO_23 poll_interval 0.02
attr GPIO_23 stateFormat Pinlevel



defmod doif_GPIO23 DOIF ( [GPIO_23] eq "on" ) ( set HUEDevice1 blink 10 )


Somit setze ich meine Frage auf gelöst.
FHEM auf Ubuntu 18.04LTS, 2x nanoCUL, JeeLink, nanoPIR, MQTT, ESP-Easy, HUE.
Sensoren+Aktoren: HM, IT, Lacrosse, Multitrade-PIR, VU+, Somfy

Otto123

Hi,

mir ist nicht ganz klar
attr GPIO_23 direction output

Aber Du simulierst einen Tastendruck - also willst Du doch einen Eingang?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

thgorjup

Von der Logic her hast du Recht, aber bei einen Eingang kann man keine "1" in die Datei schreiben.


root@pi2:~/bin# echo in > /sys/class/gpio/gpio23/direction
root@pi2:~/bin# echo 1 > /sys/class/gpio/gpio23/value
-bash: echo: Schreibfehler: Die Operation ist nicht erlaubt.
FHEM auf Ubuntu 18.04LTS, 2x nanoCUL, JeeLink, nanoPIR, MQTT, ESP-Easy, HUE.
Sensoren+Aktoren: HM, IT, Lacrosse, Multitrade-PIR, VU+, Somfy

Otto123

Ach so wegen Deiner Simulation, so gesehen ist es vielleicht wirklich das Verhalten. Wenn Du den Ausgang von FHEM aus setzen würdest gäbe es vielleicht einen Event? Und wenn der Eingang wirklich geändert werden würde vielleicht auch? Nur wenn ein Ausgang von außen manipuliert wird muss man ihn abfragen?
Ich weiß es nicht :)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz