Hauptmenü

Sonoff Dual mit DOIF

Begonnen von supergrobi, 25 September 2017, 18:17:51

Vorheriges Thema - Nächstes Thema

supergrobi

Hallo Forum,

ich stehe hier etwas auf dem Schlauch, wahrscheinlich ist es nur ein Anfängerfehler.
Um ein Sonoff Dual zu schalten habe ich mir zwei dummys gemacht und dazu ein DOIF:



define mySwitch1_Dual1 dummy
attr mySwitch1_Dual1 webCmd on:off
define di_Dual1_Switch1 DOIF ([mySwitch1_Dual1] eq "on") (set ESPEasy_Dual1_Dual1 raw sonoff1 1) DOELSE (set ESPEasy_Dual1_Dual1 raw sonoff1 0)
define mySwitch1_Dual2 dummy
attr mySwitch1_Dual2 webCmd on:off
define di_Dual1_Switch2 DOIF ([mySwitch1_Dual2] eq "on") (set ESPEasy_Dual1_Dual1 raw sonoff2 1) DOELSE (set ESPEasy_Dual1_Dual1 raw sonoff2 0)




das funktioniert soweit auch ganz gut.
Jetzt wollte ich mit einem Dummy beide Lampen gleichzeitig einschalten. Diesen habe ich wie folgt definiert:



define d_LampeEsstisch_komplett dummy
attr d_LampeEsstisch_komplett webCmd on:off
define di_LampeEsstisch_komplett DOIF ([d_LampeEsstisch_komplett] eq "on") (set mySwitch1_Dual on, set mySwitch1_Dual2 on) DOELSE (set mySwitch1_Dual1 off, set mySwitch1_Dual2 off)




Hier wird jedoch nur jeweils eine Lampe eingeschaltet. Wenn eine bereits leuchtet, wird im Wechsel geschaltet.

was mache ich hier falsch?

LG
Thomas

Amenophis86

Ich würde dir gerne helfen, aber ich habe es noch nicht verstanden was passiert bzw was nicht passiert.

Zum Zweiten poste Code doch bitte in Codetags (Die # bei den Smilies) und arbeite mit list. Mehr dazu hier.

Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

supergrobi

Danke für den Hinweis mit den Codetags... Leider ist das in jedem Forum anders und ich hab es nicht gefunden.

Also noch mal von vorn. Ich habe einen Sonoff Dual, über den ich eine Pendellampe (zwei Strahler) schalten möchte. dazu habe ich mir zwei dummys gemacht mit denen ich per webcmd jeweils einen Kanal schalte:

define mySwitch1_Dual1 dummy
attr mySwitch1_Dual1 room Wohnzimmer
attr mySwitch1_Dual1 webCmd on:off

define di_Dual1_Switch1 DOIF ([mySwitch1_Dual1] eq "on") (set ESPEasy_Dual1_Dual1 raw sonoff1 1) DOELSE (set ESPEasy_Dual1_Dual1 raw sonoff1 0)
attr di_Dual1_Switch1 room Wohnzimmer

define mySwitch1_Dual2 dummy
attr mySwitch1_Dual2 room Wohnzimmer
attr mySwitch1_Dual2 webCmd on:off

define di_Dual1_Switch2 DOIF ([mySwitch1_Dual2] eq "on") (set ESPEasy_Dual1_Dual1 raw sonoff2 1) DOELSE (set ESPEasy_Dual1_Dual1 raw sonoff2 0)
attr di_Dual1_Switch2 room Wohnzimmer


mit "set ESPEasy_Dual1_Dual1 raw sonoff2 1" wird einer eingeschaltet und mit "set ESPEasy_Dual1_Dual1 raw sonoff2 0" ausgeschaltet.
Dies funktioniert einwandfrei.  Ich möchte außerdem jedoch mit einem Dummy beide Leuchten gleichzeitig ein und ausschalten:

define d_LampeEsstisch_komplett dummy
attr d_LampeEsstisch_komplett room Wohnzimmer
attr d_LampeEsstisch_komplett webCmd on:off
define di_LampeEsstisch_komplett DOIF ([d_LampeEsstisch_komplett] eq "on") (set mySwitch1_Dual1 on, set mySwitch1_Dual2 on) DOELSE (set mySwitch1_Dual1 off, set mySwitch1_Dual2 off)


Dazu schalte ich dann die vorher definierten dummys ein und aus. Das funktioniert leider nicht. Wenn beide Lampen aus sind, schalte ich hiermit nur eine Leuchte ein, wenn jedoch eine bereits über einen der ersten Dummys eingeschaltet wurde, schalten sie sich im wechsel ein/aus irgendwann auch beide aus. Also ein recht ungewöhnliches verhalten...

hoffe, das ist jetzt verständlicher :)
was mache ich hier falsch?

lg
Thomas

Amenophis86

Jetzt verstehe ich es. Zur Problemlösung:

Auf den ersten Blick sehe ich auch keinen Fehler. Allerdings folgende Fragen dazu:

1. Erhalten beide Dummys durch die Funktion di_LampeEsstisch_komplett auch den Status on bzw off? (Prüfen, nicht einfach nur ja sagen ;))
2. Mach mal verbose 5 für alle beteiligten Device an und schau, ob da etwas drinnen steht was auch einen Fehler hinweisen könnte
3. Mach ein list von allen Device, bevor du di_LampeEsstisch_komplett schaltest und einmal danach von allen Device nachdem du di_LampeEsstisch_komplett geschaltet hast um zu sehen, wo der Unterschied beiden Device ist
4. Wie sind die timestamps der zu schaltenden Geräte? Kommt überhaupt was an und wird geschaltet?

Noch eine generelle Sache. Versuch bei Problemen ein list des device hier zu posten und nicht nur die Raw Definiton, dadurch kann man viel mehr sehen.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

pc1246

Moin
Kann das eventuell sein, dass ESPEasy da was verschluckt? Das ist doch letzendlich ein device, an das direkt nacheinander/parallel zwei Befehle geschickt werden. Gibt es da nicht evtl. einen Sammelbefehl?
Gruss Christoph
HP T610
Onkyo_AVR;Enigma2; SB_Server; SB_Player; HM-USB; PhilipsTV; harmony hub; Jeelink mit PCA301; Somfy; S7-300; LGW; HUE; HM-IP auf Charly; div

dev0

Zitat von: pc1246 am 27 September 2017, 08:03:05
Kann das eventuell sein, dass ESPEasy da was verschluckt? Das ist doch letzendlich ein device, an das direkt nacheinander/parallel zwei Befehle geschickt werden. Gibt es da nicht evtl. einen Sammelbefehl?

Ich kenne das verwendete Plugin nicht, aber das ESPEasy Modul würde einen Fehler melden (verbose 2), wenn der Befehl nicht an den ESP abgesetzt werden kann. Meine Experimente mit der ESPEasy Firmware (R147) haben gezeigt, dass bis zu 5 "gleichzeitige" Requests funktionieren.

Wenn das verwendete Plugin ein Problem damit hätte, dass Befehle zu schnell nacheinander kommen, dann könnte man das ESPEasy Bridge Attribut maxHttpSessions auf 1 setzen. Das bewirkt, dass erst dann der nächste Befehl an den ESP geschickt wird, wenn der vorgehende HTTP Request abgeschlossen wurde. Weitere Befehle landen solange in einer Warteschlage bis sie an der Reihe sind.

https://fhem.de/commandref.html#ESPEasy_bridge_attr_maxhttpsessions
https://fhem.de/commandref.html#ESPEasy_bridge_attr_maxqueuesize

@supergrobi: Zum DOIF oben kann ich nichts sagen, da ich DOIF nicht verwende.