98_MSwitch - Support

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

Vorheriges Thema - Nächstes Thema

Byte09

Zitat von: mark79 am 05 April 2018, 15:52:27
Hallo,

ich habe das Modul auch mal installiert und etwas damit rumgespielt.
Ich finde die Übersicht sehr gut, besser als die ganzen DOIF und Notifys wo ich manchmal den Überblick darüber verliere.

Da ich auch einige Dashbuttons habe und damit schalte, habe ich eine Frage bzgl. des Toggles. Im Grunde suche ich nach einer Möglichkeit, das ganze zu vereinfachen...

Bisher habe ich das über ein Notify gelöst:

defmod 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") } }
Wenn der Dash Button gedrückt wird, schaut das notify erstmal ob der TV an ist, wenn ja fährt er Kodi herunter und schaltet nach 20 Sekunden den TV bzw. die Steckdosenleiste aus.
Sofern der TV aus ist, wird nur der TV bzw. die Steckdosenleiste eingeschaltet.

Wie würde das mit MSwitch funktionieren? Im Wiki habe ich gesehen, das du ein Toggle im Device (CUL_HM_HM_LC_Dim1TPBU_FM_3387C3) drin hast. Wie hast du das umgesetzt? Bei mir gibt es nur "on" und "off".

Ich habe einige Sonoff Geräte per Tasmota angebunden und WZ_TV ist eine davon.

Würde es gehen, wenn ich unter "device actions" - "on condition" und "off condition" die MAC Adresse des DashButton eintrage, um so ein Toggle umzusetzen?
Wahrscheinlich nicht, oder? :D


Grüße
Mark

ich habe darüber nachgedacht, das 'problem' wird wohl immer wieder vorkommen mit devices die kein toggle anbieten . Ich werde dafür eine eigene Funkion integrieren , quasi eim MSwitchToggle cmd1/cmd2 .

denke bis morgen oder übermorgen habe ich das.

Gruss Byte09

mark79

Zitat von: Byte09 am 05 April 2018, 16:05:07
lege für das device "wz_tv" einfach eine zweite aktion an mit dem button "add action for wz_tv".

mit der ersten aktin schaltest du 'ON' , mit der zweiten 'OFF' ( beides im gleichen zweig - z.B 'MSwitch on cmd').

in den Conditions jeweils :

im ersten ( on condition: ) : [WZ_TV :state] eq "OFF"
im zweiten ( on condition: ) : [WZ_TV :state] eq "ON"

dann nutz er immer nur die aktion , die gerade zutrifft.
habe dir zur verdeutlichung mal ein bilder angehangen , bei denen ich ein sonoff entsprechend schalte.

die Schaltung erfolgt wenn ein Trigger den ON-Zweig auslöst .

Danke dir erstmal für die Erklärung! :)
Ich glaube ich habe es verstanden, nur warum ich die zweite Regel nicht bei "off condition" reinschreiben kann, verstehe ich noch nicht ganz.

Aber wenn ich das ausprobiere, wird mir das bestimmt klarer. Geht aber erstmal morgen, bin aktuell nicht Vorort.

Zitat von: Byte09
ich habe darüber nachgedacht, das 'problem' wird wohl immer wieder vorkommen mit devices die kein toggle anbieten . Ich werde dafür eine eigene Funkion integrieren , quasi eim MSwitchToggle cmd1/cmd2 .

denke bis morgen oder übermorgen habe ich das.

Wenn du so was einbauen würdest, was die Sache vereinfacht, wäre das schon toll! :)
So ein Toggle könnte man noch nachrüsten. Aber dann hätte man wieder ein Device mehr und je mehr das wird, umso unübersichtlich wird es, finde ich.


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

das kommt darauf an , was dein trigger auslöst .

wenn er z.b den zweig 'switch wz_tv on + execute 'on' commands' auslöst , dann arbeitet das modul nur diesen zweig ab.

wenn du nu möchtest, dass ein gerät bei eintreffen dieses triggers toggelt, welches kein toggel hat , müssen auch beide kommandos ( von denen eins ausgeführt werden soll ) in diesem zweig 'device actions MSwitch on cmd:' stehen .

jetzt prüft er den state des zu schaltenden devices [device:state] eq "ON" oder "OFF" und führt den befehl aus, wenn die Bedingung zutrifft .

.. aber ich habe das MSwitchtoggel bereits zur Hälfte fertig , es wird morgen im laufe des Tages ein Update geben. Dann ist Bei der Befehlsauswahl ein zusätzliches Feld "MSwitchtoggel [cmd1] [cmd2]" vorhanden und dann sollte es passen

gruss Byte09

Byte09

#18
kommendes update:

mit kommendem Update , was ab morgen früh verfügbar sein wird , gibt es folgende Änderungen:

- neues Attribut "MSwitch_Extensions"

wenn hier "1" gesetzt wird , gibt es in den BefehlsDropdownfeldern ein zusätzliches Auswahlfeld "MSwitchtoggle".
bei Auswahl dieser Option muss in Nebenstehendem Feld die Angabe gemacht werden , zwischen welchen Befehlen er 'toggeln' soll, z.B ( ON/OFF ). Beim ausführen dieses Befehls schaltet das betreffende Device abwechseln ON und OFF mit jedem erneuten Aufruf.
Überprüft wird hier derzeit nur der Zustand des Readings 'state' . Sollte 'state' keinen der beiden Zustände 'ON/OFF' haben, so wird beim Aufruf der erste gesetzte Befehl des Auswahlfeldes (ON/OFF) gesetzt , in diesem Fall 'ON'.

( Funktion wird weiter ergänzt )

die Version läuft bei mir heute Nacht noch zur Probe , wenn ales OK ist stelle ich Sie morgen früh in das Git

Gruss Byte09

update soeben eingespielt !

mark79

Hi,

ich habe das Update eingespielt und ein paar Stunden damit verbracht, bis die Freundin kam...

Was funktioniert, ist ein Toggle mit einem Dash Button ("DashButton:Playboy:.short") über zwei Action Devices der eine Sonoff Steckdose (WZ_Lampe) schaltet.

Nur habe ich ein kleines Problem, das dass MSwitch State Icon, also die Glühbirne nicht mit umschaltet. Schalte ich über on/off über das Webinterface im MSwitch dann schaltet das Glühbirnen State Icon mit um.

Das neue MSwitchToggle hingegen, kriege ich irgendwie gar nicht zum laufen.
Aber das liegt wohl eher daran, das ich das Modul noch nicht so recht verstehe.

Ich habe von beiden Screenshots erstellt...

Vielleicht kannst du noch mal drüber schauen... wenn ich erstmal was lauffähiges habe, dann fällt mir das auch einfacher es zu verstehen.


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

#20
hi mark ,

kann ich dich mal anders kontakten ? whatsapp, etc. ?

gruss Byte09


das zweite bild sieht okaus , aber zwischen ON und OFF im MSwitchtoggle muss ein /  ... also ON/OFF.

oben die Triggercondition nimm mal ganz raus ( erstmal ).

setz mal das attribut MSwitch_Help auf 1 , dann bekommst du buttons, in denen die formatierung jeweils erklärt wird.

mark79

#21
Hallo Byte09,

>>kann ich dich mal anders kontakten ? whatsapp, etc. ?
Klar, ich schreibe dir eine PN. :)

>>das zweite bild sieht ok aus , aber zwischen ON und OFF im MSwitchtoggle muss ein /  ... also ON/OFF.
Das war es, mit dem / funktioniert der MSwitchToggle und auch mit und ohne Triggercondition. Ich habe zwei Screenshoots angehangen.
Was noch nicht geht ist das MSwitch Icon bei OFF (es bleibt auf ON stehen).
Aber das schalten funktioniert sowohl am Dash Button und Webinterface.

Ich werde das morgen mal auf ein Device ändern, was täglich in Benutzung ist.

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

guten morgen zusammen

ich habe heute morgen ein wichtiges update eingespielt , da sich die Conditionabfrage im zusammenhang mit der variable !$we falsch verhalten hat  ( was heute morgen leider zu ungewollt geöffneten rolläden geführt hat - sorry hierfür )

das update sollte so bald wie möglich gemacht werden .

gruss Byte09

Byte09

#23
Zitat von: mark79 am 07 April 2018, 00:59:46
...
Was noch nicht geht ist das MSwitch Icon bei OFF (es bleibt auf ON stehen).
...
Grüße
Mark

Hi Mark,

ja, das kommt daher , da du das MSwitch durch den gewählten Triggerzweig 'nur' anschaltest.

du kannst  den gesetzten trigger bei 'switch XXX on + execute 'on' commands' rausnehmen und stattdessen bei 'execute 'on' commands only' setzen , dann schaltet  das MSwitchDevice gar nicht erst in den Status 'on' , sondern es wird nur der 'on-Zweig' abgearbeitet.

alternativ musst du das device wieder abschalten:

dafür musst du das MSwitch-device selber ( du hast es wohl 'test' genannt ) bei 'affected devices :' zufügen .
unter 'device actions : ' wählst du dann bei  'MSwitch on cmd:' -> Set off  und unter 'on delay:' -> 00:00:01

damit schaltet das MSwitch device 'test' dann nach 1 sekunde wieder in den Status 'off'

ist hier nochmal erklärt : https://wiki.fhem.de/wiki/MSwitch.pm#Dashbuttons

gruss Byte09



Byte09

um einfacher und besser support leisten zu können gibt es seit der letzten Version die Option "get [name] config". Diese öffnet ein Fenster mit dem kompletten configfile des Devices in folgender form:

#S .Device_Affected -> Kueche_Licht-AbsCmd1,Kueche_Licht-AbsCmd2,Kueche_Licht_Motion_Ctrl-AbsCmd1
#S .Device_Affected_Details -> Kueche_Licht-AbsCmd1,on,no_action,,,nein,nein,000000,000000,off~eq~"off"~AND~off~eq~"off",|Kueche_Licht-AbsCmd2,off,no_action,,,nein,nein,000130,000000,off~eq~"off"~AND~off~eq~"off",|Kueche_Licht_Motion_Ctrl-AbsCmd1,off,no_action,,,nein,nein,000045,000000,,
#S .Device_Events -> no_trigger|state:on
#S .First_init -> done
#S .Trigger_Whitelist -> undef
#S .Trigger_cmd_off -> no_trigger
#S .Trigger_cmd_on -> no_trigger
#S .Trigger_condition -> ([{~sunset("-5000")~}-{~sunrise()~}]~OR~[Aussenpflanze.lux]~<~500)~AND~([Kueche_Arbeitsplatte.state]~eq~"off"~AND~[Kueche_Dunsthaube.state]~eq~"off")~~AND~[Kueche_Licht_Motion_Ctrl.state]~eq~"off"
#S .Trigger_off -> no_trigger
#S .Trigger_on -> state:on
#S .Trigger_time ->
#S .V_Check -> V 0.3
#S Exec_cmd ->
#S Trigger_device -> IT_1527xac68c
#S Trigger_log -> off
#S last_event -> Stamptime:20.0169160366058
#S state -> off
#A MSwitch_Debug -> 0
#A MSwitch_Inforoom -> MSwitch
#A room -> MSwitch
#A MSwitch_Expert -> 0
#A comment -> Licht Bewegungssteuerung
#A MSwitch_Include_Devicecmds -> 1
#A MSwitch_Ignore_Types -> notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
#A MSwitch_Help -> 0
#A MSwitch_Delete_Delays -> 1
#A MSwitch_Include_Webcmds -> 0
#A MSwitch_Include_MSwitchcmds -> 0
#A MSwitch_Lock_Quickedit -> 0


Ab der nächsten Version lässt sich das File in diesem Fenster auch direkt bearbeiten und komplett oder in Teilen speichern.

gruss Byte09

Byte09

#25
Update auf V1.1 verfügbar ab morgen früh.

Neu: Befehl set del_delays ( löscht alle anstehenden - verzögerten Befehle eines Devices  )
ähnlich der bisherigen funktion 'get active_timer delete', aber als Set Befehl hinterlegt und somit aus MSwitch Devices aufrufbar
Neu: Aufruf des Configfiles eines Devices
Neu: editieren und Speichern des Configfiles ist nun möglich ( hauptsächlich um einfacher support leisten zu können )

Bugfix: Restore all Devices
Bugfix: some Perl Warnings

.. intern diverse änderungen

Gruss Byte09

mark79

Hallo Byte,

ich habe heute weiter mit deinem Modul gespielt und was umgesetzt.

Ist zwar was einfaches, aber ich bin begeistert. Ich konnte ein Dummy und Notify einsparen und dazu nun, mit einem Gerät (WZ_TV MSwitch) den Zustand für on/off auf verschiedene Geräte bzw. Aktionen vereinen.

Es geht darum, das ich im Wohnzimmer,
ein TV habe und ein ESP8266 mit IR Transmitter, zum ein und ausschalten des TVs (im Screenshot, FreeCmd das sendet einfach nur ein http Befehl an den ESP),
ein Raspberry mit Kodi (WZ_KODI) und
eine Sonoff Steckdose (WZ_TV_Sonoff) wo auch die Lautsprecher dran hängen.

Wenn ich den TV ausschalten will, soll zuerst der Kodi RPi sauber heruntergefahren werden und zugleich über den IR Transmitter der TV ausgeschaltet werden.
Dann wird 15 Sekunden gewartet bis der Raspberry heruntergefahren ist und wenn beides aus ist, soll die Sonoff Steckdose den Strom ausschalten.

Zum anschalten wird nur die Sonoff Steckdose eingeschaltet, der rest geht von alleine an.

Das ging mit deinem Modul echt leicht umzusetzen und das ganze ist nun auch einfacher in den DashButtons und anderen Logiken zu intregieren. Jetzt reicht ein einfach WZ_TV on/off

Nur das mit dem DashButton und dem Toggle habe ich bisher nicht hinbekommen, anstatt des DOIFs... das ist noch zu komplex für mich. Werde dich dazu aber noch mal in Whatsapp anschreiben. :)


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

#27
@Bäschdler

gib in der cmd von Fhem folgendes ein:
update add https://raw.githubusercontent.com/Byte009/FHEM-MSwitch/master/controls_mswitch.txt
damit nimmt er das modul mit in das update von fhem auf.

danach bitte ein
update in der cmd und dann ein
shutdown restart

damit ist das Modul dann istalliert und wird bei bedarf upgedatet.

dann öffnest du erstmal irgend ein device , und gehst unten auf RAWdefinition . dort alles löschen, folgendes reinkopieren und speichern
defmod Schalter MSwitch # dummy3 dummy1 dummy2
attr Schalter room test

defmod dummy1 dummy
attr dummy1 room test
attr dummy1 setList on off

defmod dummy2 dummy
attr dummy2 room test
attr dummy2 setList 1 2 100 150
attr dummy2 webCmd 1:2:100:150

defmod dummy3 dummy
attr dummy3 room test
attr dummy3 webCmd on:off


damit werden 4 devices im raum test angelegt - 3 dummys und ein MSwitch device.
wenn du das hast gehst du auf das MSwitch Device Schalter und dort auf get Schalter get_config.

in dem Feld was sich öffnet bitte alles löschen , und folgendes reinkopieren:

#S .Device_Affected -> dummy3-AbsCmd1,dummy3-AbsCmd2
#S .Device_Affected_Details -> dummy3-AbsCmd1,on,no_action,,,nein,nein,000000,000000,[dummy2:state]~>~100~AND~[dummy1:state]~eq~"on",|dummy3-AbsCmd2,off,no_action,,,nein,nein,000004,000000,,
#S .Device_Events -> dummy2:state:1|*:state:*|dummy2:state:100|dummy1:state:off|dummy2:state:190|dummy2:state:2|no_trigger|dummy2:state:150|dummy1:state:on
#S .First_init -> done
#S .Trigger_Whitelist -> dummy1,dummy2
#S .Trigger_cmd_off -> no_trigger
#S .Trigger_cmd_on -> *:state:*
#S .Trigger_condition -> undef
#S .Trigger_off -> no_trigger
#S .Trigger_on -> no_trigger
#S .Trigger_time -> undef
#S .V_Check -> V 0.3
#S Exec_cmd -> set dummy3 off
#S Trigger_device -> all_events
#S Trigger_log -> on
#S last_event -> state:150
#S state -> off
#A MSwitch_Include_Webcmds -> 1
#A MSwitch_Ignore_Types -> notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
#A MSwitch_Lock_Quickedit -> 1
#A MSwitch_Include_Devicecmds -> 1
#A MSwitch_Help -> 1
#A MSwitch_Extensions -> 0
#A room -> test
#A MSwitch_Include_MSwitchcmds -> 0
#A MSwitch_Delete_Delays -> 1
#A MSwitch_Expert -> 1
#A MSwitch_Debug -> 1


und "save changes" drücken

wenn du das hast , melde dich nochmal, dann kann es weitergehen .

gruss Byte09




Bäschdler

Hallo Byte09,

das habe ich jetzt alles soweit gemacht und es hat auch alles funktioniert.
Von mir aus kann's weitergehen - ich bin schon ganz gespannt :-)

Viele Grüsse
Bäschdler

Byte09

Zitat von: Bäschdler am 03 Mai 2018, 14:38:42
Hallo Byte09,

das habe ich jetzt alles soweit gemacht und es hat auch alles funktioniert.
Von mir aus kann's weitergehen - ich bin schon ganz gespannt :-)

Viele Grüsse
Bäschdler

Hi ,

im Grunde hast du damit alles was du brauchst . dummy1 und dummy2 sind die gertriggerten devises . jede stateänderung eines dieser dummys bewirkt , das der Teil 'device acctions' ausgeführt wird .
*:state:*

diese dummys musst du ersetzen , durch geräte deiner wahl , du bekommst ja alle in der Liste 'trigger device/time:' angezeigt.

wenn nun eine stateänderung eintritt wird dummy3 angeschaltet, aber nur dann wenn dummy1 > 100 und dummy2 'on' ist
[dummy2:state] > 100 AND [dummy1:state] eq "on"

dummy3 musst du ersetzen durch ein device deiner wahl ( und eine aktion deiner wahl ) - bei standartgeräten werden mögliche Befehle ja ebenfalls in der Dropdownliste angeboten. , werden ja ebenfalls alle gelistet in 'device actions :'

wenn du ein wenig experimentierst wirst du schnell dahinter kommen, das configfile kannst du ja jederzeit wieder einspielen 'get_config' -> 'save'

ansonsten ist in der configuration ja das attr 'MSwitch_Help' ja auf 1 gesetzt und somit stehen ja auch die Hilfebuttons zur verfügung '?'. ( schadet nicht , sich die Texte der belegten Felder mal anzuschauen )

wenn du dich in das modul etwas eingearbeitet hast gibt es im Grunde nur sehr wenig , was du nicht configurieren kannst .

bei konkreten Fragen und problemen gerne nachfragen .

gruss Byte09

PS : sollte dummy3 auf änderungen von dummy2 und dummy1 noch nicht reagieren , bitte einmal 'modify Trigger Device' anklicken , damit er die 'NOTIFYDEV' nach einspielen des configfiles richtig setzt