[gelöst] FRM digital in als Taster - notify problem

Begonnen von pula, 18 Juli 2015, 17:43:40

Vorheriges Thema - Nächstes Thema

pula

Hallo,

hab mir grad mit einem Arduino und einem Relay eine Steuerung für meine Zirkulationspumpe gebaut.
Aus Gründen der Bequemlichkeit habe ich direkt daneben einen Feuchtraumtaster geschraubt.

Definition:

define zirkulation_direkttaster FRM_IN 3
attr zirkulation_direkttaster IODev ke_arduino
attr zirkulation_direkttaster activeLow yes
attr zirkulation_direkttaster internal-pullup on
attr zirkulation_direkttaster room Heizung,arduino
attr zirkulation_direkttaster stateFormat reading

define n_zirkulation_direkt notify zirkulation_direkttaster {\
if (ReadingsVal("zirkulationspumpe", "value", "off") eq "off") {\
         if (ReadingsVal("zirkulation_direkttaster", "reading", "off") eq "off") {\
            fhem "set zirkulationspumpe on-for-timer 10";;\
         }\
    }\
else {\
        if (ReadingsVal("zirkulation_direkttaster", "reading", "off") eq "off") {\
            fhem "set zirkulationspumpe off";;\
        }\
    }\
}


Soweit so gut. Nur funktioniert der Taster nicht immer. Kommt mir auch so vor, als ob es einen Unterschied macht, wie lange ich den Taster drücke.
Ich nehme an, daß es daran liegt, daß sich das reading des Tasters zweimal ändert (einmal auf on, wenn ich ihn drücke, dann wieder auf off, wenn ich ihn loslasse).
Ich habe nun versucht, mit dem attr event-on-change-reading was zu machen, hat mich leider auch nicht weitergebracht.
Hat jemand eine Idee, wie ich nur ein notify bekommen kann, wenn der Taster auf ON geht, nicht aber, wenn er auf OFF geht? (eigentlich hatte ich gedacht, daß das mit der if-Konstruktion der Fall war, tat aber nicht)...

Danke im voraus!

Cheers,

Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

Puschel74

#1
zirkulation_direkttaster:ON.*
sollte doch klappen oder nicht?
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

pula

Hallo Puschel,

erstmal vielen Dank für den Hinweis. Geklappt hats dann grundsätzlich mal mit:

zirkulation_direkttaster:reading:.on

Ich hab dann die if mit der Abfrage auf den Status vom Direkttaster entfernt.

Klappen tut das aber auch nur, wenn ich den Taster länger (gefühlt > 0.5 s) drücke, was ich nicht verstehe - im log hab ich die Meldung, daß ein on da war, ins notify geht er aber nicht:

2015.07.18 22:25:56 5: wzmilight_Notify: Triggered by zirkulation_direkttaster; reading: on
2015.07.18 22:25:57 5: FRM:<90
2015.07.18 22:25:57 5: FRM:<08
2015.07.18 22:25:57 5: FRM:<00
2015.07.18 22:25:57 5: onDigitalMessage for pin 3, old: 0, new: 1
2015.07.18 22:25:57 5: Triggering zirkulation_direkttaster (1 changes)
2015.07.18 22:25:57 5: Notify loop for zirkulation_direkttaster reading: off
2015.07.18 22:25:57 5: wzmilight_Notify: Triggered by zirkulation_direkttaster; reading: off


Verstehe ich jetzt nicht so wirklich?

Kleine Zusatzfrage:

bei zirkulation_direkttaster:reading:.on
der Punkt vor dem on - warum ist der notwendig? Das ist doch der Joker bei regexp? Nur für möglicherweise auftretende Leerzeichen?

Cheers,

Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

Puschel74

Der Punkt steht für EIN beliebiges Zeichen - in diesem Fall das Leerzeichen vor on.

Zitatim log hab ich die Meldung, daß ein on da war, ins notify geht er aber nicht:
Das ein on da war siehst du aber du weisst nicht ob er nicht doch ins notify springt aber deine Abfragen nur nicht zutreffen.
Bau doch mal ein
Log(3,"Das ist ein Test - $EVENT");
in deinen Code ein und schau mal ob was im Logfile auftaucht.

Achtung! Meine Beispiele beziehen sich auf das DEF.
Wer den Code direkt in die fhem.cfg eingeben will muss sich selbst um Sonderzeichen kümmern.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

pula

Hallo,

ah, danke. Dann ist der Punkt nur ein wildcard :-)

Mache ich, aber eigentlich sollte das nicht nötig sein, oder?
Wenn das ON erfolgreich erkannt wird, bekomme ich folgendes im log (hab zum testen verbose auf 5):

2015.07.18 22:25:56 5: onDigitalMessage for pin 3, old: 1, new: 0
2015.07.18 22:25:56 5: Triggering zirkulation_direkttaster (1 changes)
2015.07.18 22:25:56 5: Notify loop for zirkulation_direkttaster reading: on
2015.07.18 22:25:56 5: Triggering n_zirkulation_direkt
2015.07.18 22:25:56 4: n_zirkulation_direkt exec {
if (ReadingsVal("zirkulationspumpe", "value", "off") eq "off") {
            fhem "set zirkulationspumpe on-for-timer 10";;
    }
else {
            fhem "set zirkulationspumpe off";;
    }
}
2015.07.18 22:25:56 5: Cmd: >{
if (ReadingsVal("zirkulationspumpe", "value", "off") eq "off") {
            fhem "set zirkulationspumpe on-for-timer 10";
    }
else {
            fhem "set zirkulationspumpe off";
    }
}<


Das passiert aber eben nicht jedes mal :-(
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

Puschel74

Zitat von: pula am 18 Juli 2015, 22:45:50
Das passiert aber eben nicht jedes mal :-(

Dann hast du vermutlich entweder ein Hardwareproblem oder FHEM bekommt die Events nicht schnell genug geschickt.
Bei beidem kann ich dir aber leider nicht helfen.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

pula

Hallo nochmal!

Vielen Dank für Deine Antwort.
Ich denke nicht, daß das der Fall ist.
Was mich stutzig macht ist der Log-Eintrag von weiter oben:

2015.07.18 22:25:56 5: wzmilight_Notify: Triggered by zirkulation_direkttaster; reading: on

Es gibt in meiner fhem.cfg kein wzmilight_Notify ?!
Ich hab zwar ein device wzmilight, aber KEIN notify dazu?!

Das ist das define des devices:
define wzmilight MilightBridge 192.168.1.187
attr wzmilight checkInterval 10
attr wzmilight event-on-change-reading state
attr wzmilight port 8899
attr wzmilight room wz
attr wzmilight sendInterval 100


Habe mich durch die fhem-Verzeichnisse gegrepped, den String wzmilight_Notify habe ich aber nicht gefunden?!?!
Kann das sein, daß das milight-modul hier reinfunkt??
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

pula

Hallo,

hatte nach langem den Zwang, mich diesem Problem zu widmen.
Die Lösung war eigentlich einfach: Ich hatte das sampling-interval für den arduino in fhem auf default (1000 ms) gelassen.
Habe es jetzt auf 99 gestellt (das ist im sketch auch so) - plötzlich funktioniert das Schalten wunderbar :-)

Cheers,

Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram