[Gelöst] Toggle Funktion funktioniert nicht richtig, Dashbutton + Sonoff Touch

Begonnen von mark79, 24 September 2017, 20:06:07

Vorheriges Thema - Nächstes Thema

mark79

Hallo,

ich habe ein Amazon Dashbutton per dhcp eingerichtet und möchte damit ein Sonoff Touch (mit ESPEasy und per mqtt an Fhem angebunden) ein oder ausschalten.
Eingerichtet ist alles und ich kann die Geräte auch via Fhem Webinterface schalten.

Was nicht funktioniert ist der Toggle (IF ELSE) beim Amazon Dashbutton, ich kann den Sonoff Lichtschalter (WZ_Lichtschalter) nur einschalten, aber ausschalten funktioniert nicht.

Hier die Regel:
define DashButton dash_dhcp
attr DashButton allowed 18:74:2E:6B:0C:xx
attr DashButton port 6767
attr DashButton room dashbutton
define n_DashButton1 notify DashButton:18-74-2e-6b-0c-xx..short IF ( [WZ_Lichtschalter] eq "on") ( set WZ_Lichtschalter off ) ELSE ( set WZ_Lichtschalter on )

Aus dem Event Log:
2017-09-24 18:02:50 MQTT_DEVICE WZ_Lichtschalter on
2017-09-24 18:02:50 dash_dhcp DashButton 18-74-2e-6b-0c-32: short
Die zwei weiteren Befehle bleiben ohne Funktion:
2017-09-24 18:03:05 dash_dhcp DashButton 18-74-2e-6b-0c-32: short
2017-09-24 18:03:18 dash_dhcp DashButton 18-74-2e-6b-0c-32: short

Ich habe zwei Fhem Screenshoots vom Sonoff Touch erstellt, einmal mit WZ_Lichtschalter on und einmal mit off.
on: https://drive.google.com/file/d/0B7J7LuZOLY7nREtDWURfRklmSHc/view?usp=drivesdk
off: https://drive.google.com/file/d/0B7J7LuZOLY7nVTdnaVBabExxTzg/view?usp=drivesdk

Dash Button Screenshot:
https://drive.google.com/file/d/0B7J7LuZOLY7nTG1zZ0xuclFCV1U/view?usp=drivesdk

Kann mir jemand weiterhelfen? :)


Viele Grüße
Mark
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

MadMax-FHEM

FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

#2
Vielleicht nicht so wie du willst und vermutlich unnötiger Wechsel zwischen fhem-perl-fhem aber so sollte es gehen:

define n_DashButton1 notify DashButton:18-74-2e-6b-0c-xx..short {if(ReadingsNum("WZ_Lichtschalter","state",0) == 1) {fhem "set WZ_Lichtschalter off"} else {fhem "set WZ_Lichtschalter on"}}

EDIT: da ich wie gesagt eigentlich (fast) immer eine Sub aufrufe bin ich mit den "Möglichkeiten" in fhem nicht so vertraut, löse Abfragen/Vergleiche/Prüfungen etc. immer in der Sub (perl) und rufe dann halt (nach der Entscheidung) die entsprechende Funktion in fhem...

EDIT2: zur Info https://wiki.fhem.de/wiki/99_myUtils_anlegen ein entsprechendes Notify sieht dann so aus: define nTest notify RegEx {mySubInMyUtils($EVENT)} ob ich dann einen (oder mehrere) Parameter und welche ($NAME, $EVENT, $EVTPART, ...) übergebe hängt davon ab was ich brauche. Meist mache ich auch erst mal nur eine Logausgabe, dann sehe ich ob das Notify triggert wie gewünscht und welche Werte meine Parameter liefern... Und dann lege ich los. Ansonsten feile ich noch ein wenig am Notify...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

mark79

Hey danke dir Joachim, mit deinem String funktioniert der Toggle! :)

Ich war mitlerweile schon etwas gefrustet... aber das liegt daran das ich noch nicht verstehe wie sich das alles genau zusammensetzt, aber da komme ich noch irgendwann dahinter.

Mit Fhem stehe ich echt noch ganz am Anfang und muss mir erstmal die Fhem Grundlagen noch genauer durchlesen, damit ich $NAME, $EVENT, $EVTPART richtig zuordnen kann.

Aber dank dir habe ich ein Erfolgserlebnis und kann es mit dem jetzigen gelernten erweitern und dadurch lerne ich dazu.

Als nächstes kommt ein Sonoff 4ch Switch dran, für den der Dashbutton eigentlich gedacht ist und ich werde mir noch ein paar bestellen... :)
Damit will ich die TV Geräte, die Stehlampe ein & ausschalten mittels Dashbuton und auch später Alexa und andere Geräte via Anwesenheitskontrolle über Bluetooth ein & auschalten.
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

MadMax-FHEM

Bitte gerne!

So soll es sein...
...Erfolgserlebnisse müssen sein, sonst macht das keinen Spaß...
Weiß ich selbst...

Wie gesagt ist nicht optimal aber ver/nachbessern kann man ja immer wieder mal...
...ich gehe auch immer wieder über meine Installation und "räume auf" ;)

Achja, den Thread als gelöst kennzeichnen: umbenennen z.B. in [gelöst] Toggle Funktion funktioniert nicht richtig, Dashbutton + Sonoff Touch

Viel Spaß noch!

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

mark79

Ich finde es schon optimal, es funktioniert und es erzeugt auch ja keine Last wie z.B. bei dem Dashbutton ping...

Und meine fhem.cfg muss ich auch mal aufräumen und sortieren... :D

Danke noch mal.  :)


VG
Mark
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

MadMax-FHEM

Ja aber wie gesagt ich denke "unnötige" Wechsel zwischen fhem - perl - fhem...

Die '{' geht dann in die perl-Ebene und fhem "set..." ist dann wieder fhem-Ebene...
...und der Notify ist schon fhem-Ebene...

Und an dieser Stelle der (übliche/wichtige) Hinweis:

Von manuellem Bearbeiten der fhem.cfg wird stark abgeraten!!!
Da eigentlich unnötig!
Und eine Ordnung eigentlich ebenso, da ja alles (irgendwie) über die Oberfläche erreichbar und anpassbar ist...

Und jetzt Schluss mit Hinweisen, "Belehrungen", ... ;)
Jeder muss selber lernen! ;)

Gruß und viel Spaß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Frank_Huber

Ich denke dein ursprünglicher notify würde auch funktiobieren wenn du anstatt "on" auf "1" prüfst.
Musst mal genau kucken was dein so off im state reading hat.

Gesendet von meinem S3_32 mit Tapatalk


MadMax-FHEM

Zitat von: Frank_Huber am 25 September 2017, 07:46:59
Ich denke dein ursprünglicher notify würde auch funktiobieren wenn du anstatt "on" auf "1" prüfst.
Musst mal genau kucken was dein so off im state reading hat.

Gesendet von meinem S3_32 mit Tapatalk

Die Variante hatte er auch schon (zumindest sieht es so aus, wenn man dem "History-Link" folgt)...
...scheint aber auch nicht funktioniert zu haben...

In den Bildern ist zu sehen, dass das state Reading "1" und "0" stehen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

mark79

Ich meine ich habe das auch ausprobiert, bin mir aber jetzt nicht mehr sicher ob ich die IF ELSE Abfrage, auch mit 0 und 1 ausprobiert hatte.
Ich werde das Mittwoch ausprobieren, da bin ich wieder in der Bastelstube :D

Ich bin dabei an eine Erweiterung des Strings zu arbeiten, da ich gerne vor dem Abschalten der Sonoff 4CH Steckdose ein SSH/http Befehl zum anderen Raspberry wo Libreelec (Kodi) drauf läuft, diesen sauber herunterfahren möchte.
Das soll via ssh mit einen shutdown Befehl erfolgen und nach einen sleep 20 soll die Sonoff Steckdose ausgeschaltet werden.

Ich bin nur noch nicht sicher ob das korrekt geschrieben ist:

define Kodi_DashButton_WZ notify DashButton:18-74-2e-6b-0c-xx..short {if(ReadingsNum("WZ_Kodi","state",0) == 1) {fhem ("set Kodi_System halt");; sleep 20;; ("set WZ_Kodi off")} else {fhem ("set WZ_Kodi on")}}
oder so:
define Kodi_DashButton_WZ notify DashButton:18-74-2e-6b-0c-xx..short {if(ReadingsNum("WZ_Kodi","state",0) == 1) {fhem "set Kodi_System halt";; sleep 20;; "set WZ_Kodi off"} else {fhem "set WZ_Kodi on"}}
oder aber so :D
define Kodi_DashButton_WZ notify DashButton:18-74-2e-6b-0c-xx..short {if(ReadingsNum("WZ_Kodi","state",0) == 1) {fhem "set Kodi_System halt"};;{fhem "set sleep 20";;{fhem "set WZ_Kodi off"} else {fhem "set WZ_Kodi on"}}

"Kodi_System halt" ist ein dummy Device der per SSH Befehl auf dem externen Kodi System zugreift und ein "shutdown -h now" ausführt.
"WZ_Kodi off" ist die Sonoff Steckdose

Aber ich werde das Mittwoch einfach mal ausprobieren und das alles durchgehen.
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

MadMax-FHEM

Besser, wenn du die Defines etc. schon mal in code-Tags postest... ;)

Geht auch nachträglich (Beitrag editieren)...
...code-Tags ist das '#' im "Menü"...

Dann ist das leichter zu lesen...

Es gibt für KODI auch ein fhem Modul...
...weiß aber nicht, ob da ein Shutdown (auch) gehen würde...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

mark79

Ok, ich habe es editiert.

Was mir überhaupt nicht klar ist, wenn ich den String von dir erweitern will, wie viele ich von den {}, "", ; oder () ich da einbauen muss :D
Das ist sehr spanisch, aber mit Linux Befehlen kenne ich mich dafür recht gut aus und das mit dem SSH und dem Shutdown sollte keine Probleme machen.

Das Kodi Fhem Modul schaue ich mir mal an, aber im Grunde ändert das wenig am Stringaufbau.

Ich werde das einfach testen am Mittwoch... und vielleicht klappt das dann ja schon. *daumendrück* :)
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

MadMax-FHEM

Hallo,

die Variante hat gefühlt am meisten Potential:

define Kodi_DashButton_WZ notify DashButton:18-74-2e-6b-0c-xx..short {if(ReadingsNum("WZ_Kodi","state",0) == 1) {fhem "set Kodi_System halt";; sleep 20;; "set WZ_Kodi off"} else {fhem "set WZ_Kodi on"}}

Allerdings denke ich so wäre es richtig(er):

define Kodi_DashButton_WZ notify DashButton:18-74-2e-6b-0c-xx..short {if(ReadingsNum("WZ_Kodi","state",0) == 1) {fhem "set Kodi_System halt;; sleep 20;; set WZ_Kodi off"} else {fhem "set WZ_Kodi on"}}

Das mit den ist so (ähnlich):

{ } -> wechsel von fhem nach perl (oder einfach geschweifte Klammer, wenn schon in perl)

fhem "FHEMBEFEHL(E)" -> fhem-Ebene (nur nötig, wenn aus perl heraus)

das mit den ; bzw. ;; kommt drauf an, ob direkt in der fhem.cfg (was man besser nicht tut/tun sollte) oder in ein Web-Fenster z.B. Edit-Fenster bei DOIF, Notify, ...

Aber wie gesagt, ich rufe meist gleich eine Funktion/Sub in myUtils auf und dort bin ich in perl und kann dort "einfach programmieren" und muss halt fhem-aufrufe entsprechend absetzen, das war's...
Ansonsten bin ich bzgl. den fhem-Dingen/-Befehlen/-"Maskierungen"/... leider nicht so firm, sorry.

Durch diese Variante kann ich neben "einfach zu programmieren" auch erst mal per Logausgabe prüfen, dass das Notify etc. auch "auslöst" und was an Parametern reinkommt und auch zu "debug-Zwecken" einiges Loggen, finde es halt deutlich übersichtlicher...
...aber meine Meinung und mein Stil.

Jeder muss seinen finden...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

mark79

Hallo erstmal :)

danke dir, da war ich schon fast nah dran.. wobei mir fällt gerade auf, ich habe beim Sleep Befehl die Gänsefüßchen vergessen.
Ich werde Berichten ob es geklappt hat. :)

Das mit dem ; kenne ich schon von Linux, ist so ähnlich wie & also z.B. "sleep 5 && beep".
Und auch Danke für die Erklärung { }, ( ), [ ] das ergibt nun auch mehr Sinn für mich!

Das mit dem Sub in myUtils hattest du schon erwähnt. Ich habe mir das auch angeschaut...
Aber das ist noch ganz weit weg, dafür muss ich bestimmt erstmal 1 Jahr mit einem Perl Programmiersprachen Buch unter dem Kopfkissen schlafen, bis ich die Variablen alle kenne. :D


Viele Grüße
Mark
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

MadMax-FHEM

Ich denke da fehlen keine " " beim sleep...
...ich glaube fhem dann " dann die ganzen Befehle und dann " wieder zu...

Bzgl. ; bzw. ;; kommt drauf an, ob du es im Notify DEF machst oder in der fhem.cfg...
(glaube ich / man kann aber auch mal suchen, findet sich bestimmt was / in der myUtils sind es einfach nur einfache ;)  )

Aber: Versuch macht kluch... ;)

Besser vorher mal die fhem.cfg sichern...
...bzw. parallel ein "Spielsystem" aufziehen...

Das mit perl fand ich nicht schlimm...
...ich musste nur ab und an lesen wie die Befehle heißen/funktionieren...

Die speziellen "Variablen" ($EVENT, $NAME, ...) sind fhem-spezifisch...

Viel Spaß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)