[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)

mark79

Hallo,

hier noch mal eine Rückmeldung von gestern.

Erstmal wegen dem "anstatt "on" auf "1" prüfen", das hat nicht geklappt. Der Lichtschalter ging nur an, aber nicht wieder aus.
Ich hatte das nach dem einschalten, noch zwei mal probiert auszuschalten, aber leider ohne Erfolg, siehe Log.

define n_DashButton1 notify DashButton:18-74-2e-6b-0c-32..short IF ([WZ_Lichtschalter] eq "0") (set WZ_Lichtschalter 0) ELSE (set WZ_Lichtschalter 1)

Eventlog:

    2017-09-27 14:16:11 MQTT_DEVICE WZ_Lichtschalter on
    2017-09-27 14:16:11 MQTT_DEVICE WZ_Lichtschalter transmission-state: outgoing publish sent
    2017-09-27 14:16:11 dash_dhcp DashButton 18-74-2e-6b-0c-32: short
    2017-09-27 14:16:25 dash_dhcp DashButton 18-74-2e-6b-0c-32: short
    2017-09-27 14:16:35 dash_dhcp DashButton 18-74-2e-6b-0c-32: short

Aber dafür geht MadMax-FHEM Perl String! :)

Und mehrere Befehle hintereinander klappt auch! :)
Also das wenn ich auf den Dashbutton drücke und der TV + Raspberry mit Kodi eingeschaltet ist, das er zuerst Kodi herunter fährt, 20 Sekunden wartet und dann erst die Sonoff Steckdose ausschaltet.

Hier die Einträge, WZ_TV ist die Sonoff Steckdose.

Der DashButton
define WZ_Dash_Afri notify DashButton:68-37-e9-61-39-xx..short {if(ReadingsNum("WZ_TV","state",0) == 1) {fhem "set WZ_Kodi off;; sleep 20;; set WZ_TV off"} else {fhem "set WZ_TV on"}}

Ein Dummy Device mit einem Script, um mit Fhem Kodi herunter zu fahren.
define WZ_Kodi dummy
attr WZ_Kodi room Wohnzimmer
attr WZ_Kodi webCmd off
define Kodi_off notify WZ_Kodi:off "sudo /opt/fhem/script/WZ_Kodi.sh"


Das Script dazu (/opt/fhem/script/WZ_Kodi.sh)
#!/bin/bash
sshpass -p geheimpasswort ssh root@192.168.2.39 "shutdown -h now"

exit



... Dann habe ich noch weiter gebastelt, bis irgendwann überhaupt nix mehr ging.  ;D
Der Webcmd Befehl um den WZ_Lichtschalter zu schalten, ging nur noch sporadisch und der MQTT Broker auch irgendwie. Als ob irgendwas stört, so wie eine doppelte IP Vergabe, was es aber nicht gibt.
Ich konnte mit mqttfx nicht mehr die Topics scannen, es wurde nichts angezeigt.

Per Console wird noch was angezeigt.
#mosquitto_sub -v -h 127.0.0.1 -p 1883 -t '#'


    /WZ_Lichtschalter/status Connected
    /4ch/status Connected
    /WZ_Lichtschalter/status Connected
    /4ch/status Connected
    /WZ_Lichtschalter/status Connected
    /4ch/status Connected
    /WZ_Lichtschalter/status Connected
    /4ch/status Connected
    /WZ_Lichtschalter/gpio/12 0
    /WZ_Lichtschalter/gpio/12 1

Ist das normal, das alle 30 Sekunden sich die ESPEasy Software zum mqtt Broker verbinden (Connected)?

Habe dann erstmal aufgehört, weil die Freundin kam und dann konnte ich mich nicht mehr konzentrieren...
Freitag gehts weiter, da wollte ich die Sonoffs (ESPEasy) umflashen, auf die Tasmota Firmware... vielleicht ist das damit dann behoben.


Grüße
Mark

EDIT:
Habe den Fehler wohl gefunden, das liegt am MQTT Client Namen, der war doppelt durch zwei Sonoffs vergeben.
Warum ESPEasy da nicht den "Unit Name" Name nimmt, sondern überall ESPClientX ist komisch. Aber man kann das mit einer "Unit Number" ändern...


  • 1506591881: Client ESPClient1 already connected, closing old connection.
    1506591881: Client ESPClient1 disconnected.
    1506591881: New client connected from 192.168.2.49 as ESPClient1 (c1, k15, u'').
    1506591907: New connection from 192.168.2.48 on port 1883.
    1506591907: Client ESPClient1 already connected, closing old connection.
    1506591907: Client ESPClient1 disconnected.
    1506591907: New client connected from 192.168.2.48 as ESPClient1 (c1, k15, u'').
    1506591911: New connection from 192.168.2.49 on port 1883.

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

pnewman

Hallo Mark,

wenn du in DashButton das Attribut devAlias benutzt

attr DashButton devAlias 18-74-2e-6b-0c-32:Dash_Afri xx-xx-xx-xx-xx-xx:Dash_Persil

Und wenn Du dann den DashButton mal wechseln musst brauchst Du nur das
attr DashButton devAlias xx-xx-xx-xx-xx-xx:Dash_Afri
ändern indem du die neue Mac davor legst.
Somit musst Du die notify oder DOIF nicht ändern.

Und Du kannst dein notify einfach so schreiben:

define WZ_Dash_Afri notify DashButton:Dash_Afri:.short {if(ReadingsNum("WZ_TV","state",0) == 1) {fhem "set WZ_Kodi off;; sleep 20;; set WZ_TV off"} else {fhem "set WZ_TV on"}}



oder als DOIF:

define WZ_Dash_Afri_DI DOIF ([DashButton:"^Dash_Afri:.short$"] and [WZ_TV] eq "0") (set WZ_Kodi off)(set WZ_TV off)
DOELSEIF ([DashButton:"^Dash_Afri:.short$"])(set WZ_TV on)

Und das attribut wait:
attr WZ_Dash_Afri_DI wait 0,20
Hierbei ist die erste 0 für das
(set WZ_Kodi off)
Und die 20 für das
(set WZ_TV off)
das schaltet dann die gewünschten 20 sekunden später.

Das notify ist eine Kopie von deinem,
das DOIF habe ist eine Mischung aus einem meiner DOIF mit deinen Bedingungen.
Ich arbeite gerne mit DOIF, d bekomme ich mehr unter und es bleib übersichtlich.

Ich hoffe das beides funktioniert.

Gruß
Ralf
Raspberry Pi3B+ / Nano-Cul 868 - MAX!=Heizung, HM-Lan - Rollo+Licht, JeeLink-Clone 868 - LaCrosse, JeeLink-Clone 868 - PCA301, CUL 434 - IT-Steckdosen+Fernbedienung

mark79

Hallo Ralf,

danke dir für die neuen Vorschläge! :)
Da muss ich erstmal darüber nachgrübeln und es ausprobieren... :D

Der "wait" Befehl gefällt mir, das ich auch gelesen habe das ein "sleep" fhem einfrieren könnte, unter bestimmten Bedingungen.

Heute wollte ich den Sonoff 4 Channel Relay verkabeln und wenn ich es schaffe, in der Küche noch ein Sonoff Relay verbauen für den TV und dann kann ich direkt die neuen Strings für Fhem ausprobieren..

Aber so funktioniert schon mal alles... *freu*

Ich habe das Shutdown Script noch erweitert, welches vorher den TV ausgeschaltet, mittels IR Blaster, bevor alles vom Strom getrennt wird: https://github.com/mdhiggins/ESP8266-HTTP-IR-Blaster

root@raspberrypi:/opt/fhem# cat /opt/fhem/script/WZ_Kodi.sh
#!/bin/bash
/usr/bin/wget -qO- "http://192.168.2.46/msg?code=84C:RC5:12&pulse=2&repeat=1&pass=passwort&simple=1" &> /dev/null
sshpass -p passwort ssh root@192.168.2.38 "shutdown -h now"

exit


Ich werde später berichten... :)


Schönes Wochenende!
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

mark79

Hallo,

ich habe am WE alles verkabelt (ein Sonoff 4ch im WZ und in der Küche noch ein Sonoff für den TV) und dann habe ich das DOELSEIF ausprobiert.
Aber es kam leider wieder das alte Problem, einschalten ging, ausschalten nicht.  :(

attr DashButton devAlias 18-74-2e-6b-0c-xx:Dash_Afri xx-xx-xx-xx-xx-xx
define WZ_Dash_Afri_DI DOIF ([DashButton:"^Dash_Afri:.short$"] and [WZ_TV] eq "0") (set WZ_Kodi off)(set WZ_TV off)
DOELSEIF ([DashButton:"^Dash_Afri:.short$"])(set WZ_TV on)
attr WZ_Dash_Afri_DI wait 0,20


Da mir das für den Anfang zu komplex war, habe ich wieder die andere Methode verwendet.

Dann gab es aber ein Problem, das ich von ESPeasy, wo der "state" durch "0" und "1" übergegeben wird, auf die Tasmota Firmware gewechselt bin, wo "ON" und "OFF" als "state" übermittelt wird.

Und somit der ReadingsNum String nicht mehr funktionierte:
define Dash_Eukanuba notify DashButton:50-f5-da-83-7c-xx..short {if(ReadingsNum("WZ_Stehlampe","state",0) == 1) {fhem "set WZ_Stehlampe off;; set WZ_Lichtschalter off"} else {fhem "set WZ_Stehlampe on;;set WZ_Lichtschalter off"}}

Bis ich das mal mit dem "ReadingsVal" und "eq" herausgefunden habe, sind einige Stunden mit der Commandref/Forumrecherche und gefühlten 50 Strings durchprobieren vergangen... wie gesagt newbie...
Aber der hier funktioniert, für ein ON/OFF switch state:
define Dash_AfriCola notify DashButton:68-37-e9-61-39-xx..short { if (ReadingsVal("WZ_TV","state","") eq "ON") { fhem("set WZ_Kodi off;; sleep 20;; set WZ_TV off") } else { fhem("set WZ_TV on") } }


Ich werde das mit DOELSEIF noch mal später ausprobieren, an den Tagen hatte ich noch andere Dinge im Kopf, die ich umgesetzt habe.  ;D

Ich habe noch eine Anwesenheitskontrolle per BT-LE umgesetzt und das funktioniert bis jetzt auch ganz gut. Morgen kommt noch ein selbstgebauter ESP8266 Türsensor an die Haustüre dran.
Als nächstes wollte ich Heizkörperthermostate und Fenstersensoren anbinden... ein paar Funkmodule und Fenster Sensoren habe ich mir schon in China bestellt.


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