98_MSwitch - Support

Begonnen von Byte09, 25 März 2018, 12:19:58

Vorheriges Thema - Nächstes Thema

Byte09

Zitat von: mark79 am 12 Mai 2018, 12:16:11
Hallo, danke dir das funktioniert nun auch. :) Ich hatte das mit 1 0 probiert, anstatt mit 1/0.  ::)

Gibt es noch eine Möglichkeit das Icon bzw. den State vom MSwitch Device mit ändern zu lassen?
Jetzt steht immer nur "on" und das Icon wird als eingeschaltet angezeigt, auch wenn der toggle für "off" ausgeführt wurde.

Der blaue Style heißt "f18", der ist ziemlich neu bei Fhem mit dabei und ist mit Javascript.
https://forum.fhem.de/index.php?topic=82351.0


Viele Grüße
Mark

Hi Mark,

im Grunde sollte diese Funktion im reinen Notifymode betrieben werden , d.H den Trigger nur in den feldern 'execute 'on' commands only' oder 'execute 'off' commands only' gesetzt wird, somit würde sich das Icon des MSwitch devices gar nicht verändern. Leider habe ich einen ziemlich ätzenden Bug reingearbeitet ( auf deinen Post hin gefunden ) , der dafür sorgt, das das Togglen gar nicht geht , wenn du den Trigger in geanu diesen Feldern definierst , sondern nur in 'switch All_Off_Dev on + execute 'on' commands' bzw. 'switch All_Off_Dev on + execute 'off' commands'. Ich nehme an das du genau das gemacht hast , sonst würde es gar nicht gehen.

ich werde mich heute Nachmittag mit diesem Fehler beschaäftigen und ein Update einstellen , danach mehr dazu .

gruss Byte09

mark79

Hallo Byte,

das ist auch eher nur ein kosmetisches Problem. :) Aber vielleicht kommt das irgendwann mal später. :D
Das man z.B. bei einem affected devices anhaken kann, das sich der state vom MSwitch Device mit ändern soll, wenn das affected devices geschaltet wird.

Den Bug kann ich bestätigen, mit on + execute gehts:
switch <test> on + execute 'on' commands

Und nur bei execute , schaltet er nur aus, aber nicht mehr ein.
execute 'on' commands only

Aber zuvor lag der Fehler bei mir, das ich es nicht mit dem Schrägstrich eingerichtet habe, sondern nur versucht habe mit "1 0" und "1:0"...

Werde nun mal weiter testen.. vielen Dank dir für die Hilfe!


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

Byte09

habe eben das Update v1.31 eingespielt Ich hoffe der Bug ist damit behoben.

das Wikibeispiel kommt daher heute leider zu kurz, mache ich morgen  :(

gruss Byte09

Byte09

Zitat von: mark79 am 12 Mai 2018, 17:51:45
Hallo Byte,

das ist auch eher nur ein kosmetisches Problem. :) Aber vielleicht kommt das irgendwann mal später. :D
Das man z.B. bei einem affected devices anhaken kann, das sich der state vom MSwitch Device mit ändern soll, wenn das affected devices geschaltet wird.
...........


in der nächsten Version wird es eine Lösung für das Problem geben .

gruss Byte09

Byte09

Update auf V1.4 verfügbar:

Änderungen:

in den 'on condition:' und 'off condition:' sind nun folgende Variablen verfügbar

[$EVENT]
[$EVENTFULL]
[$EVTPART1]
[$EVTPART2]
[$EVTPART3]



Zusätzliches Attribut 'MSwitch_Mode' verfügbar.

Mode 'Full' : Device ist in vollem, bisherigem Funktionsumfang verfügbar.
Mode 'Notify' : Device befindet sich im 'Notify' Mode. d.H folgende Optionen sind nicht verfügbar und werden nicht ausgeführt.

'switch MSwitch on + execute 'on' commands at :'
'switch MSwitch off + execute 'on' commands at :'
'switch DEVICE on + execute 'on' commands'
'switch DEVICE on + execute 'on' commands'

desweiteren hat des MSwitch Device in diesem Mode keine set on/off Option und kein devstateicon mehr, sondern wird lediglich als 'active' dargestellt, falls es nicht 'disabled' ist. Somit vergleichbar der Darstellung von Notify, Doif etc.

Wenn dieses Attribut nicht gesetzt ist , wird die Einstellung 'Full' angenommen.
Bei neuen Devices wird das Attribut beim ersten Define auf 'Full' gesetzt .

gruss Byte09



Byte09

#65
Ich habe in der aktuellen Version leider vergessen ein log0 auf log5 zu ändern , d.h es werden ohne ende logeinträge generiert . Ich ändere das sobald ich Zuhause bin .

Sorry und Gruss Byte09

Gesendet von meinem SM-G900F mit Tapatalk

Byte09

#66
update auf V1.41 verfügbar.

fix LOG
add ATTR 'MSwitch_Wait'


das Logproblem (LOG 0 ) wurde behoben. Aus Eigenbedarf habe ich ein Attribut 'MSwitch_Wait' eingebaut . Wenn dieses Attribut gesetzt ist ( Zeit in Sekunden ) reagiert das MSwitch-Device für den gesetzten Zeitraum auf keine weiteren Events, nachdem ein Event positiv getriggert wurde.

Wird dieses Attribut nicht oder auf '0' gesetzt, entspricht das Verhalten dem bisherigen Verhalten .

gruss Byte09

@det. - Danke für den Hinweis  ;)

Byte09

#67
@mark79

ich habe das MSwitch Toggle heute morgen mit einigen Geräten probiert , mit veerschiedenen Kombinationen ( 0/1 , on/off , ON/OFF ) etc. Diese gingen alle ohne Probleme - von daher kann ich nicht nachvollziehen, warum es mit der Yeelight nicht geht. Kannst du mir bitte mal ein LOG einstellen, was beim Schaltvorgang passiert ( verbose 5 ) und ein List der Yeelight ?

was steht denn im reading 'state' der Yeelight ? wird das der aktuelle Zustand on oder off abgebildet ?

Gruss Byte09

mark79

Hallo Byte,

ups du hast recht, das liegt am State der Yeelight. Sorry. :)
Dort steht als state "opened" und dadurch sendet das MSwitch immer ein on an die Yeelight.

Das power Reading wäre dann das richtige im Yeelight Device, dort steht entweder "on" oder "off" als State.

Kannst du mir helfen, wie ich mit MSwitch auf das power Reading, reagieren lassen kann? Das kommt dann sicherlich in den on condition, aber wie?
Oder ich schreibe den "State" in der Yeelight um. Komme aber erst später dazu, weiter zu machen...

Internals:
   DEF        192.168.2.67
   DeviceName 192.168.2.67:55443
   FD         49
   HOST       192.168.2.67
   ID         192.168.2.67
   NAME       YeeLight
   NOTIFYDEV  global
   NR         410
   NTFY_ORDER 50-YeeLight
   PARTIAL   
   PORT       55443
   PROTO      1
   STATE      opened
   TYPE       YeeLight
   READINGS:
     2018-05-15 21:31:46   bright          100
     2018-05-15 21:31:46   color_flow      off
     2018-05-15 21:31:46   color_mode      color temperature
     2018-05-15 21:31:46   ct              3500
     2018-05-15 21:31:46   flow_params     
     2018-05-15 21:31:46   hue             359
     2018-05-15 21:31:46   music_mode      off
     2018-05-15 21:31:46   name           
     2018-05-16 10:22:29   power           on
     2018-05-15 21:31:46   rgb             FF0000
     2018-05-15 21:31:46   rgb_blue        0
     2018-05-15 21:31:46   rgb_green       0
     2018-05-15 21:31:46   rgb_red         255
     2018-05-15 21:31:46   sat             100
     2018-05-15 21:31:46   sleeptimer      0
     2018-05-16 10:21:05   state           opened
   helper:
     CommandSet on off toggle on-for-timer off-for-timer intervals bright dimup dimdown name default:noArg reopen:noArg close:noArg statusrequest:noArg hsv hue sat rgb color ct start_cf stop_cf scene circlecolor:noArg blink
     AnsQue:
     ErrQue:
     SendQue:
Attributes:
   DbLogExclude .*
   devStateIcon {my $power=ReadingsVal($name,"power","off");my $mode=ReadingsVal($name,"color_mode","RGB");if($power eq "off"){Color::devStateIcon($name,"rgb","rgb","power");}else{if($mode eq "RGB"){Color::devStateIcon($name,"rgb","rgb","bright");}elsif($mode eq "color temperature"){Color::devStateIcon($name,"rgb",undef,"bright");}}}
   room       YeeLight
   webCmd     rgb:bright:ct:rgb ffffff:rgb ff0000:rgb 00ff00:rgb 0000ff:on:off
   widgetOverride bright:colorpicker,BRI,0,1,100 ct:colorpicker,CT,1700,10,6500 rgb:colorpicker,RGB



root@rock64:/opt/fhem/log# tail -f fhem-2018-05.log |grep test
2018.05.16 10:25:41 5:   test state: click
2018.05.16 10:25:41 5: test MSwitch_Notify: einzeleventtest ende L:1605
2018.05.16 10:25:41 5: test MSwitch_Notif: var set für folgenden Befehlsaufruf ->  on - state:click 1651
2018.05.16 10:25:41 3: test MSwitch_Notif: Befehlsausfuehrung -> set test on state:click 1667
2018.05.16 10:25:41 3: test MSwitch_Set: aufruf MSwitch_checkcondition L:1002
2018.05.16 10:25:41 5: test MSwitch_checkcondition: ->  3705
2018.05.16 10:25:41 3: test MSwitch_Set: Befehlsausfuehrung -> set YeeLight MSwitchtoggle on/off L:1011
2018.05.16 10:25:41 5: test MSwitch_Set:  set YeeLight MSwitchtoggle on/off 1226
2018.05.16 10:25:41 5: test MSwitch_Set:  set YeeLight MSwitchtoggle on/off 1229
2018.05.16 10:25:41 5: test MSwitch_toggle:  set YeeLight MSwitchtoggle on/off 1249
2018.05.16 10:25:41 5: test MSwitch_toggle:  xsetx 1252
2018.05.16 10:25:41 5: test MSwitch_toggle:  xYeeLightx 1253
2018.05.16 10:25:41 5: test MSwitch_toggle:  x x 1254
2018.05.16 10:25:41 5: test MSwitch_toggle:  xonx 1255
2018.05.16 10:25:41 5: test MSwitch_toggle:  xoffx 1256
2018.05.16 10:25:41 5: test MSwitch_toggle: testnew -> opened 1270
2018.05.16 10:25:41 5: test MSwitch_toggle: cmd1 -> set YeeLight on 1271
2018.05.16 10:25:41 5: test MSwitch_toggle: cmd2 -> set YeeLight off 1272
2018.05.16 10:25:41 5: test MSwitch_toggle: neuer befehl -> set YeeLight on 1273
2018.05.16 10:25:41 5: test errechneter befehl:  set YeeLight on 1233


2018.05.16 10:25:49 5:   test state: click
2018.05.16 10:25:49 5: test MSwitch_Notify: einzeleventtest ende L:1605
2018.05.16 10:25:49 5: test MSwitch_Notif: var set für folgenden Befehlsaufruf ->  on - state:click 1651
2018.05.16 10:25:49 3: test MSwitch_Notif: Befehlsausfuehrung -> set test on state:click 1667
2018.05.16 10:25:49 3: test MSwitch_Set: aufruf MSwitch_checkcondition L:1002
2018.05.16 10:25:49 5: test MSwitch_checkcondition: ->  3705
2018.05.16 10:25:49 3: test MSwitch_Set: Befehlsausfuehrung -> set YeeLight MSwitchtoggle on/off L:1011
2018.05.16 10:25:49 5: test MSwitch_Set:  set YeeLight MSwitchtoggle on/off 1226
2018.05.16 10:25:49 5: test MSwitch_Set:  set YeeLight MSwitchtoggle on/off 1229
2018.05.16 10:25:49 5: test MSwitch_toggle:  set YeeLight MSwitchtoggle on/off 1249
2018.05.16 10:25:49 5: test MSwitch_toggle:  xsetx 1252
2018.05.16 10:25:49 5: test MSwitch_toggle:  xYeeLightx 1253
2018.05.16 10:25:49 5: test MSwitch_toggle:  x x 1254
2018.05.16 10:25:49 5: test MSwitch_toggle:  xonx 1255
2018.05.16 10:25:49 5: test MSwitch_toggle:  xoffx 1256
2018.05.16 10:25:49 5: test MSwitch_toggle: testnew -> opened 1270
2018.05.16 10:25:49 5: test MSwitch_toggle: cmd1 -> set YeeLight on 1271
2018.05.16 10:25:49 5: test MSwitch_toggle: cmd2 -> set YeeLight off 1272
2018.05.16 10:25:49 5: test MSwitch_toggle: neuer befehl -> set YeeLight on 1273
2018.05.16 10:25:49 5: test errechneter befehl:  set YeeLight on 1233
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

Byte09

Das geht mit dem toggle im moment gar nicht , dieses kann nur dascreading state abfragen und entsprechend reagieren. Habe mir das heute morgen schon gedacht und mir Gedanken dazu gemacht.

Ich werde die toggle Routine heute abend entsprechend ändern/erweitern , so dass hier auf ein beliebiges , definierbares reading  reagiert werden kann

Gruss Bytr09

Gesendet von meinem SM-G900F mit Tapatalk


Byte09

#70
ich werde nachher ein Update auf V1.42 einspielen.

Änderung:
Funktionsänderung/erweiterung MSwitchToggle.

Bisher konnte Toggle nur auf das Reading 'state' eines Devices auswerten und entsprechend reagieren.

set [name] MSwitchtoggle on/off

hier wurde einfach derZustand des Readings 'state' des betreffenden Devices geprüft.
war dieser 'on' wurde ein set off gesendet,
war dieser 'off' wurde ein set oon gesendet.

das funktionierte nur dann , wenn der 'state' genau die im MSwitch-device gespeicherte Befehle beinhaltete.


Neue Funktion :

die alte Syntax bleibt erhalten und entspricht in der Funktion genau dem bisherigen Verhalten.
zusätzlich ist folgende Syntax möglich
set [name] MSwitchtoggle on/off/reading/suchmuster1/suchmuster2
wird nur
set [name] MSwitchtoggle on/off/
angegeben , so entspricht das dieser neuen Syntax  (wird dann intern ergänzt)
set [name] MSwitchtoggle on/off/state/on/off

erklärung :
wird im state von [name] 'on'(suchmuster1)  gefunden, so wird der Befehl 'off' gesendet,
wird im state von [name] 'off'(suchmuster1)  gefunden, so wird der Befehl 'on' gesendet

gruss Byty09

@mark79

set YeeLight MSwitchtoggle on/off/power/on/off
alternativ wird wohl auch :
set YeeLight MSwitchtoggle on/off/state/opened/closed
funftionieren, wenn der state zwischen opened und closed (ggf. opened und closed rumdrehen ) wechselt ?!


Konfigbeispiel Playbulb Sphere - Farbe togglen:

set Sphere MSwitchtoggle rgb ff0000/rgb 0000ff/rgb/ff0000/0000ff


Byte09

update auf V1.42 verfügbar.

gruss Byte09

mark79

Hallo Byte,

das ist ja genial, update eingespielt und es funktioniert. Vielen Dank! :)

set YeeLight MSwitchtoggle on/off/power/on/off
set YeeLight MSwitchtoggle rgb FF0000/rgb 0000FF/rgb/FF0000/0000FF


Damit kann ich eine Nachtischlampe mit der Yeelight umsetzen.. später soll die auch als Lichtwecker fungieren. Aber da überlege ich noch, wie ich das am besten umsetze.

set YeeLight MSwitchtoggle on/off/state/opened/closed

Funktioniert bei mir nicht und ich habe es mit verschiedenen Variationen ausprobiert.


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

andies

Also, das ist mir jetzt peinlich - ich habe ja im wikieintrag herumgeschrieben, aber bis jetzt das Modul noch nicht im Einsatz, weil ich ein paar elementare Dinge nicht kapiere.

Es heißt ja, dass ,,Zweige" steuerbar sind. Kann man das auch so beschreiben, dass mehrere FHEM-Befehle zusammengefasst und durch einen einzigen Befehl im Modul (bzw. einen trigger oder einen Zeitpunkt) ausgelöst werden? Ist dann also ein Zweig so eine Art Menge von Befehlen?

Bisher sehe ich nur on und off als mögliche Zweige. Oder übersehe ich da was?
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Byte09

Zitat von: andies am 17 Mai 2018, 21:26:12
Also, das ist mir jetzt peinlich - ich habe ja im wikieintrag herumgeschrieben, aber bis jetzt das Modul noch nicht im Einsatz, weil ich ein paar elementare Dinge nicht kapiere.

Es heißt ja, dass ,,Zweige" steuerbar sind. Kann man das auch so beschreiben, dass mehrere FHEM-Befehle zusammengefasst und durch einen einzigen Befehl im Modul (bzw. einen trigger oder einen Zeitpunkt) ausgelöst werden? Ist dann also ein Zweig so eine Art Menge von Befehlen?

Bisher sehe ich nur on und off als mögliche Zweige. Oder übersehe ich da was?

Hi Andies ,

die Grundidee des Moduls war ja eine ganz andere , aus dieser resultiert das Grundgerüst des Modules , so wie es ist. Irgendwann hat sich diese Grundidee aber als Sackgasse erwiesen und irgendo viel mal der Satz 'aber ein cooles Mutiswitch-device" , ich glaube von det.

Ab da war die Intention, ein Modul zu schreiben , was alles kann , sprich ich aufkeine anderen Module mehr angewiesen bin.

Zu den Zweigen:

Das "grund"-Mswitch device ist ja schaltbar , On oder Off. Nun kann ich eine beliebige Zahl von Geräten definieren , die eine Aktion ausführen sollen , wenn das MSwitch device geschaltet wird .
der 'on-zweig' - was tun die devices , wenn das MSwitch auf On schaltet
der 'off-zweig' - was tun die Geräte , wenn das MSwitch device auf Off schaltet

beim manuellen schalten des MSwich werden die entsprechenden zweige abgearbeitet
, wobei jedes device in jedem Zweig mit einer vielzahl von Bedingungen verknüpft werden kann  ( "on", oder "offconditions"

alternativ zum manuellen schalten kann das schalten des MSwiches auch durch einen Trigger oder eine feste Zeit ausgelöst werden .

alternativ dazu kann auch jeder zweig durch ein trigger aussgelöst werden , der state des Mswitches ändert sich aber nicht ( notify - mode )

und zuguter letzt können diese alternativen auch gleichzeitig , nebenher belegt werden in einem Device.

so ergeben sich eine Variation von Schaltmöglichkeiten , die - zumindest für mich - jedes weitere 'Schalt'-Modul unnötig machen.

Ist etwas schwierig zu erklären in schriftform. Wenn du lust hast können wir gerne mal dazu telefonieren. Aber das beste wäre es wohl einfach mal ein Device anzulegen und damit zu spielen  ;)

Gruss Thomas