state mqtt device nach 2 sekunden zurücksetzen Dummy State zurücksetzen

Begonnen von accloginsell, 26 November 2016, 20:50:19

Vorheriges Thema - Nächstes Thema

accloginsell

Servus,

habe heute meinen iButton installiert.

Das ganze geht über ein ESP8266 board und wird über MQTT sicher übermittelt

Nun leider habe ich ein Problem. Es wird nur ein Status gesendet, wenn der iButton aufliegt. Dieser wird jede Sekunde gesendet. Bei Abnahme des iButtons erfolgt keine Benachrichtgung.

Wie kann ich es machen, dass sobald 5 Sekunden kein incoming publsch kam das der Status auf 0 zurückgesetzt wird?

Aktueller Dummy:

define ibutton MQTT_DEVICE
attr ibutton IODev MyBroker
attr ibutton alias Zugang Wohnung KEY NICO
attr ibutton devStateIcon {"ibutton":{"id":014XXXXXXXXX}}:fts_door_open: 0:fts_door:
attr ibutton genericDeviceType ContactSensor
attr ibutton group ATueren
attr ibutton homebridgeMapping ContactSensorState=state,values=0:Fensterzu
attr ibutton room Homekit
attr ibutton stateFormat Temperature
attr ibutton subscribeReading_Temperature /ESP0008C50C/json


Status dauerthaft: {"ibutton":{"id":014XXXXXXXXX}}
gerne würde ich dann nach 5 Sekunden ohne incoming publish den Status auf 0 setzen.

Wäre klasse wenn ihr mir helfen könntet

Dankeschön!

Viele Grüße
Nico

dev0

Mit einem notify auf das auslösende Event triggern und dann im Befehlsteil des notify mit "sleep 5 ibuttonID; setreading $NAME ...." einen Timer starten, der durch neue auslösende Events überschrieben wird und ansonsten nach 5 Sekunden den Befehl setreading... abarbeitet.

Weitere Details dazu findest Du hier:
http://fhem.de/commandref.html#notify
http://fhem.de/commandref.html#sleep
http://fhem.de/commandref.html#setreading

accloginsell

Servus

Danke für die Antwort.

define ibutton_on notify ibutton.* {\
            fhem("sleep 5 ibuttonID")};;{\
fhem("setreading ibutton Temperature 0")};;{\
  }


was ist an meinem Code falsch? FHEM friert ein und setzt dann auf 0...

Danke dir für deine Hilfe!

Grüße
Nico

dev0

Das Wechseln auf die Perlebene ist unnötig und in diesem Fall blockierend, da auf das sleep kein Befehl folgt. Also entweder ohne Perl oder beide fhem(...) zu einem zusammenfassen. Die regexp solltest du noch weiter einengen.

stromer-12

FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

dev0

Einen Watchdog fänge ich an der Stelle übertrieben, man muss nur sleep richtig anwenden und die regexp weiter einschränken, damit das notify sich nicht selbst ständig triggert. Aber bevor wir hier noch lange rummachen:

define n_ibutton notify ibutton:Temperature:.*ibutton.* sleep 5 ID_$EVTPART1;; setreading $NAME Temperature 0


lenoxef

Zitat von: accloginsell am 26 November 2016, 20:50:19
Servus,

habe heute meinen iButton installiert.

Das ganze geht über ein ESP8266 board und wird über MQTT sicher übermittelt

Nun leider habe ich ein Problem. Es wird nur ein Status gesendet, wenn der iButton aufliegt. Dieser wird jede Sekunde gesendet. Bei Abnahme des iButtons erfolgt keine Benachrichtgung.

Wie kann ich es machen, dass sobald 5 Sekunden kein incoming publsch kam das der Status auf 0 zurückgesetzt wird?

Aktueller Dummy:

define ibutton MQTT_DEVICE
attr ibutton IODev MyBroker
attr ibutton alias Zugang Wohnung KEY NICO
attr ibutton devStateIcon {"ibutton":{"id":014XXXXXXXXX}}:fts_door_open: 0:fts_door:
attr ibutton genericDeviceType ContactSensor
attr ibutton group ATueren
attr ibutton homebridgeMapping ContactSensorState=state,values=0:Fensterzu
attr ibutton room Homekit
attr ibutton stateFormat Temperature
attr ibutton subscribeReading_Temperature /ESP0008C50C/json


Status dauerthaft: {"ibutton":{"id":014XXXXXXXXX}}
gerne würde ich dann nach 5 Sekunden ohne incoming publish den Status auf 0 setzen.

Wäre klasse wenn ihr mir helfen könntet

Dankeschön!

Viele Grüße
Nico

Hallo accloginsell,

ich bin schon seit einigen Wochen auf der Suche iButtons als Zutrittskontrolle in meiner FHEM-Umgebung zu nutzen. Ich hatte selbst mal eine sehr gut funktionierende iButton Auswertung auf einem Arduino geschrieben leider funktioniert das Programm aber nicht auf dem ESP8266, ich hatte da Probleme die Bibliothek auf den ESP zu bekommen. Weiterhin hatte ich dann probiert, mein vorhandenes Programm auf dem Arduino zu lassen, die Daten per RX-TX an einen ESP01 zu übergeben und dann über ESP-Link an Fhem zu übertragen.. Aber leider ist es beim Versuch geblieben, Erfolg hatte ich damit nicht.

Kannst du mir und auch allen anderen Interessierten vieleicht sagen wie du das ganze aufgebaut hast? Welche Hardware, welche Software u.s.w.