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

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