98_MSwitch - Support

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

Vorheriges Thema - Nächstes Thema

Byte09

auf mehrfachen Wunsch wird die Debug Funktion in der kommenden Version geändert sein.

Debug 0
Keine gesonderte Funktion

Debug 1
zusätzliche Einblendung von Testbuttons für Conditions, etc.

Debug 2
Portokollierung aller Aktionen des Devices in gesonderter Logdatei - Aktionen werden nur simuliert und nicht ausgeführt

Debug 3
normaler Ablauf incl. ausführung aller Schaltvorgänge . Es werden alle Aktionen in gesonderter Datei protokolliert.

Sat Sep 15 15:49:35 2018 Starte Log
Sat Sep 15 15:49:38 2018: -> ----------------------------------------
Sat Sep 15 15:49:38 2018: -> t: aufruf on/off -> off
Sat Sep 15 15:49:38 2018: -> ----------------------------------------
Sat Sep 15 15:49:38 2018: -> t: angesprochener zweig cmd1 -> device -> -HM_1F675D-AbsCmd1-
Sat Sep 15 15:49:38 2018: -> t: teste auf timerstatus -> 0
Sat Sep 15 15:49:38 2018: -> t: timerstatus nach test -> 0
Sat Sep 15 15:49:38 2018: -> t: befehl gefunden -> set HM_1F675D off
Sat Sep 15 15:49:38 2018: -> t: teste auf delay -> 0
Sat Sep 15 15:49:38 2018: -> t: teste auf condition -> wird nicht getestet - kein eintrag
Sat Sep 15 15:49:38 2018: -> t: ergebniss condition -> ergebniss true
Sat Sep 15 15:49:38 2018: -> t: in exec-cmdpool geschrieben ->set HM_1F675D off
Sat Sep 15 15:49:38 2018: -> t: anzahl der auszufuehrenden befehle -> 1
Sat Sep 15 15:49:38 2018: -> t: uebergabe an sub execute
Sat Sep 15 15:49:38 2018: -> t:     execute -> set HM_1F675D off |HM_1F675D-AbsCmd1
Sat Sep 15 15:49:38 2018: -> t:     cmd nach decodierung -> set HM_1F675D off
Sat Sep 15 15:49:38 2018: -> t:     execute als fhemcode -> set HM_1F675D off


sieht im Device dann aus wi in angehangenem Screenshot.

gruss Byte09

Byte09

#436
Ich habe eine erste Version , der V2.0 soeben in das GIT gestellt. Wer möchte kann sie gerne testen. Feedback wäre hilfreich.

Vor dem Update auf diese Verion ist unbedingt ein Backup aller MSwitch-Devices zu machen , andernfalls gibt es kein zurück auf die atuelle Version im Falle eines Falles.

Nach dem Update ist zwingend ein Fhemneustart erforderlich .

In dieser Betaversion habe ich (aus sicherheitsgründen) das automatische anpassen der gespeicherten Daten deaktiviert, d.H es muss jedes Device manuell upgedatet werden. Ein entsprechender Button wird im Device angeboten. Solange ein Device nicht aktualisiert wurde ist es blockiert. ( siehe Bilder im Anhang )

Ein normales Fhemupdate überspielt diese Version wieder auf aktuelle version . Falls es Probleme mit dieser Version gibt kann insofern wieder auf die jetzt aktuelle Version umgestellt werden. Nach Rückspielung dieser Version muss ein Fhemneustart und danach ein 'Restore MSwitch_data all_devices' ausgeführt werden , damit sollte der aktuelle Stand wieder hergestellt sein.

Info: Der Debugmode 2 und 3 in der neuen verision ist Resourcenhungrig, d.H diese sollten wirklich nur eingesetzt werden , wenn es nötig ist . Der Debugmode 4 ist ein reiner Entwicklungsmode , auf den ich verschiedene Funktionen nach Bedarf lege. In der fertigen version wird dieser nicht mehr verfügbar sein.

einmaliges update über die Befehlszeile:
update all https://raw.githubusercontent.com/Byte009/FHEM-MSwitch/master/controls_mswitch.txt

Nochmal der Hinweis:
Es handelt sich um eine Testversion . Fehler (ggf. auch gravierende) sind nicht ausgeschlossen !

gruss Byte09

Edit:
Bekannte probleme:
Repeatfunktion fehlerhaft -> Fix V2.0 beta 1 - eingespielt 17.09.18 - 17:00
configfile fehlerhaft -> Fix V2.0 beta 2 - eingespielt 19.09.18 - 19:00

Byte09

#437
INFO:

bekanntes problem mit den modulen 21_OWSWITCH.pm und  21_OWLCD.pm.

diese werden von MSwitch nicht als schaltbare Devices erkannt . Das Problem ist nicht über das MSwitch-Modul lösbar. Falls jemand MSwitch in Verbindung mit diesen Modulen nutzen möchte -> bitte kurze nachfrage per PM

gruss Byte09

Bäschdler

Hallo,

jetzt habe ich endlich wieder Zeit gefunden mich um die (Um-)Programmierung auf dieses Modul zu kümmern. Ich habe vieles gefunden und es scheint wirklich DAS Modul für meine Anforderung zu sein. Danke an diese Stelle an Byte09.

Jetzt habe ich noch 2 Problemchen ungelöst:
Das MSwitch Device das ich angelegt habe (OG_WZ_ROLL_Balkon_Abschattung) lässt sich innerhalb des Moduls über entsprechende Parameter (in meinem Fall azimuth aus dem twilight Modul zwischen 100 und 230 bzw über 230) an- und wieder ausschalten. Wenn ich aber innerhalb des Moduls " [myLocation:azimuth]>100 AND [myLocation:azimuth]<230 AND [OG_WZROLL_Balkon_Abschattung:state] eq "off" " eintrage wird der Status nicht erkannt. Setze ich einen testdummy mit derselben Regel und trage " [myLocation:azimuth]>100 AND [myLocation:azimuth]<230 AND [testdummy:state] eq "off" " ein dann funktioniert es.
Was auch nicht funktioniert ist den pct-Wert des Rolladens auszuwerten. Dies habe ich mit " [myLocation:azimuth]>100 AND [myLocation:azimuth]<230 AND [OG_WZ_Roll_Balkon:pct]>5 " versucht aber diese Bedingung wird nie wahr.

Kann mir jemand sagen was ich anders machen muss, dass diese beiden Dinge funktionieren ?


Danke für eure Hilfe

Viele Grüsse
Bäschdler

Byte09

Zitat von: Bäschdler am 20 September 2018, 14:21:25
Hallo,

jetzt habe ich endlich wieder Zeit gefunden mich um die (Um-)Programmierung auf dieses Modul zu kümmern. Ich habe vieles gefunden und es scheint wirklich DAS Modul für meine Anforderung zu sein. Danke an diese Stelle an Byte09.

Jetzt habe ich noch 2 Problemchen ungelöst:
Das MSwitch Device das ich angelegt habe (OG_WZ_ROLL_Balkon_Abschattung) lässt sich innerhalb des Moduls über entsprechende Parameter (in meinem Fall azimuth aus dem twilight Modul zwischen 100 und 230 bzw über 230) an- und wieder ausschalten. Wenn ich aber innerhalb des Moduls " [myLocation:azimuth]>100 AND [myLocation:azimuth]<230 AND [OG_WZROLL_Balkon_Abschattung:state] eq "off" " eintrage wird der Status nicht erkannt. Setze ich einen testdummy mit derselben Regel und trage " [myLocation:azimuth]>100 AND [myLocation:azimuth]<230 AND [testdummy:state] eq "off" " ein dann funktioniert es.
Was auch nicht funktioniert ist den pct-Wert des Rolladens auszuwerten. Dies habe ich mit " [myLocation:azimuth]>100 AND [myLocation:azimuth]<230 AND [OG_WZ_Roll_Balkon:pct]>5 " versucht aber diese Bedingung wird nie wahr.

Kann mir jemand sagen was ich anders machen muss, dass diese beiden Dinge funktionieren ?


Danke für eure Hilfe

Viele Grüsse
Bäschdler

Hi Bäschdler,

das sind leider zu wenig infos, um hier genau zu schauen was schief läuft. Schalte doch erstmal deas entsprechende MSwitch in den debugmodus ( attribut MSwitch_debug auf 1) . dann hast du entsprechende Felder, mit denen du die Conditions prüfen kannst , sieht dann so aus:

eingehender String:
[detdummy_1:pct] >7 AND [detdummy_1:state] eq "up"

If Anweisung Perl:
if (ReadingsVal('detdummy_1', 'pct', 'undef') >7 && ReadingsVal('detdummy_1', 'state', 'undef') eq "up"){$answer = 'true';} else {$answer = 'false';}

Bedingung ist Wahr und wird ausgeführt

States der geprüften Readings:
Reading: [detdummy_1:state] - Inhalt: up
Reading: [detdummy_1:pct] - Inhalt: 8


ggf. kannst du ja hier schon sehen , ob estwas nicht stimmt.

ansonsten gib mir bitte mal ein configfile des devices ( get DEVICE get_config) und ggf. ein list des devices, dessen zustand nicht erkannt wird.

gruss Byte09

Bäschdler

Hallo,

(gefühlt) habe ich seit ich das erste Mal den Debug-Mode eingeschaltet habe, dass mir das Logfile überläuft. Letzten Monat war es ein paar hundert kByte gross, diesen Monat hat es stolze 450 MByte.

Kann man da was einstellen, dass da nicht so viele Meldungen generiert werden?

Danke und Grüsse
Bäschdler

Byte09

Zitat von: Bäschdler am 21 September 2018, 13:46:37
Hallo,

(gefühlt) habe ich seit ich das erste Mal den Debug-Mode eingeschaltet habe, dass mir das Logfile überläuft. Letzten Monat war es ein paar hundert kByte gross, diesen Monat hat es stolze 450 MByte.

Kann man da was einstellen, dass da nicht so viele Meldungen generiert werden?

Danke und Grüsse
Bäschdler

auf was hast du denn das verbose der devices stehen ? stell die mal auf 1, dann werden nur Fehler protokolliert. der Debugmode hat in der von dir genutzten Version nicht mit dem Logfile zu tun .

Letztendlich empfehle ich dir eh ein update auf die Version 2.0 ( ein paar posts drüber ) .

gruss Byte09

Byte09

#442
update auf v2.00.

ab sofort ist die version 2.00 über das svn verfügbar.
diese version beinhaltet gravierende änderungen in der datenstruktur, d.H ich empfehle vor dem update ein backup der MSwitches.

- Debugmodus 2 und 3 protokollieren alle aktionen in einer eigenen datei . debug 3 sendet dabei keine Befehle , sondern simuliert lediglich

- in der auswahlliste der betroffenen geräte ist jetzt immer das device 'MSwitch_Self' zur auswahl vorhanden. d.H wenn sich das MSwitch selber schalten soll , kann hier immer dieses device gewählt werden. vorteil : bei einspielung eines configfiles muss keine anpassung erfolgen , wenn sich der name des devices geändert hat.

-auswahlfelder ID : bei setzten einer ID wird dieser befehl im normale ablauf nicht mehr berücksichtigt . Mit einer ID besetzte Befehle können aber aus den cmd-zweigen abgerufen werden . vorteil: erheblich mehr schaltmöglichkeiten , nicht mehr in direkter abhängigkeit von den schaltzweigen.

- änderung disable : das device kann nun auch bearbeitet werden , wenn es disabled ist

- editorfenster für 'get sysextension' : nur für sonderfunktionen

- configfiles geändert: configfiles können nun so angelegt werden , dass nach dem einspielen bestimmte geräteersetzungen etc. abgefragt werden . dieses mache einen support erheblich einfacher.

Achtung , alte Backups und Configfiles sind in dieser Version nicht mehr verwendbar.

gruss Byte09


edit: Zeitfenster verpasst , erst ab morgem im update   :( .

Byte09

die aktuelle Version ist jetzt auch im GIT verfügbar.

update all https://raw.githubusercontent.com/Byte009/FHEM-MSwitch/master/controls_mswitch.txt

nach update ist ein fhemneustart zwingend notwendig !

gruss Byte09


Bäschdler

Hallo,

Zitat
auf was hast du denn das verbose der devices stehen ? stell die mal auf 1, dann werden nur Fehler protokolliert. der Debugmode hat in der von dir genutzten Version nicht mit dem Logfile zu tun .

Letztendlich empfehle ich dir eh ein update auf die Version 2.0 ( ein paar posts drüber ) .

Verbose war gar nicht als attribut gesetzt. Habe dann erst mal 1 eingestellt, da kam aber irgendwie auch mehr als nur Fehler und habe es jetzt mal auf 0 gesetzt. Jetzt kommt zwar gar nichts mehr im Logfile an, aber dafür wird's auch nicht dadurch unnötig gross ;-)

Jetzt funktioniert soweit alles so, wie ich es mir vorgestellt hatte :-)

Eine Frage hätte ich jetzt noch: In der Doku habe ich nichts über Ausdrücke in Klammer gelesen. Ich habe ein Konstrukt von "Bedingung1 AND Bedingung2 OR Bedingung1 AND Bedingung3" fände es aber viel hübscher wenn ich "Bedingung1 AND (Bedingung2 OR Bedingung3) schreiben könnte. Geht so was und wenn ja, wie muss ich das eintragen?


Habe eben ein Update auf die Version 2 gemacht, kann daher zu dieser Version noch nichts sagen.

Danke und Grüsse
Bäschdler

Byte09

#445
setze mal das attribut 'MSwitch_Help' auf 1, dann hast du vor jedem Feld ein Hilfebutton . dort ist entsprechende syntax beschrieben .

[19.10-23:00] AND ([Devicename:Reading] = 10 OR [Devicename:Reading] = 11)

... kannst du so schreiben.

letztendlich kannst du die klammern nach 'normalen' regeln setzen. mit den entsprechenden buttons 'check condition ' kannst du dir ansehen, was dabei herauskommt ( dafür attribut 'MSwitch_Debug' auf 1 setzen ) :

z.B.
[$EVENT] eq "IT_1527xac68c:state:on"  AND ([{ sunset("-5000") }-{ sunrise() }] OR [Motion_Control:Lux] < [Lux_Schwelle:state]) AND ([Kueche_Arbeitsplatte:state] eq "on" OR [Kueche_Dunsthaube:state] eq "on")

ansicht 'check condition':
eingehender String:
[$EVENT] eq "IT_1527xac68c:state:on" AND [Kueche_Arbeitsplatte:state] eq "off" AND [Kueche_Dunsthaube:state] eq "off" AND ([{ sunset("-5000") }-{ sunrise() }] OR [Motion_Control:Lux] < [Lux_Schwelle:state])

If Anweisung Perl:
if (ReadingsVal('Motion_Control', 'last_event', 'undef') eq "IT_1527xac68c:state:on" && ReadingsVal('Kueche_Arbeitsplatte', 'state', 'undef') eq "off" && ReadingsVal('Kueche_Dunsthaube', 'state', 'undef') eq "off" && ((1516728540 < 1516768740 && 1516768740 < 1516772400) || ReadingsVal('Motion_Control', 'Lux', 'undef') < ReadingsVal('Lux_Schwelle', 'state', 'undef'))){$answer = 'true';} else {$answer = 'false';}

If Anweisung Perl Klarzeiten:
if (ReadingsVal('Motion_Control', 'last_event', 'undef') eq "IT_1527xac68c:state:on" && ReadingsVal('Kueche_Arbeitsplatte', 'state', 'undef') eq "off" && ReadingsVal('Kueche_Dunsthaube', 'state', 'undef') eq "off" && ((18:29 < 05:39 && 05:39 < 06:40) || ReadingsVal('Motion_Control', 'Lux', 'undef') < ReadingsVal('Lux_Schwelle', 'state', 'undef'))){$answer = 'true';} else {$answer = 'false';}

Bedingung ist Wahr und wird ausgeführt

States der geprüften Readings:
Reading: [Lux_Schwelle:state] - Inhalt: 13
Reading: [Motion_Control:Lux] - Inhalt: 9
Reading: [Kueche_Dunsthaube:state] - Inhalt: off
Reading: [Kueche_Arbeitsplatte:state] - Inhalt: off
Reading: [Motion_Control:last_event] - Inhalt: IT_1527xac68c:state:on



gruss Byte09

Byte09

#446
Codeschnipsel:

MSwitch-Configuration  um 'soft' zu dimmen.

Da ich doch einige Dimmer betreibe, die keine ramptime etc unterstützen , bzw nicht über register beinflussbar sind habe ich mal dieses MSwitch gebastelt, welches beliebige Dimmer soft dimmt. die Dimmgeschwindigkeit ist dabei über zwei dropdowns einstellbar ( siehe Bild ). Voraussetzung ist , das das Dimmdevice sowohl das reading ptc hat , als auch den Befehl set ptc ... versteht.

vorgehen : leeres MSwitch-Device erstellen , anhängenden Configfile einspielen - Frage nach zu dimmendem Device beantworten - fertig. Würde mich freuen , wenn es mal jemand testen würde. Umbau auf andere readings/sets ist möglich. Das Configfile benötigt mindestensdie Modulversion V2.0.


über die beiden dropdowns wird zum einen die Verzögerungszeit eingestellt , zum anderen die 'Dimmschritte' per durchlauf.

10 - 00:00:10 -alle 10 sekunden wird um 10% gedimmt

Bei entsprechender restlicher Systemkonfiguration ( genericDeviceType-light etc. ) ist dieses Device direkt über Alexa ansprechbar : Schalte Device XX%


PS:In einer Variante dieses Devices betreibe ich auch meine Tradfri etc. Lampen (MQTT) . Diese Version hat einen 'vogeschalteten' Linearschalter, da diese über MQTT einen Dimmbereich von 0 - 256 haben , Alexa z.B aber nur bis 100% versteht ( glaube ich ). Bei Interesse oder Bedarf -> kurze Anfrage hier.

#I Achtung, des zu steuernde Device muss das Reading ptc haben und über set DEVICE ptc WERT angesteuert werden können !
#Q HM_1F675D#bitte dieses Device gegen ein vorhandenes Dimmer-Device ersetzen :#device
#V V2.00
#VS V2.00
#S .Device_Affected -> FreeCmd-AbsCmd1,FreeCmd-AbsCmd2,HM_1F675D-AbsCmd1,MSwitch_Self-AbsCmd1
#S .Device_Affected_Details -> FreeCmd-AbsCmd1#[NF]cmd#[NF]cmd#[NF]{;;my $ziel = ReadingsVal("$SELF","ziel",0); # bis wohin gedimmt werden soll;;my $ist = ReadingsVal("HM_1F675D","pct",0); # zustand der lampe;;;my $steps = ReadingsVal("$SELF","steps",1); # dimmschritte pro durchgang;;Log3( "SELF", 5, "SELF: ziel ".$ziel );;;Log3( "SELF", 5, "SELF: ist ".$ist );;;if ($ist == $ziel ) # lösche wiederholung wenn ziel erreicht;; {;; fhem("set $SELF del_delays");;; return;;; };;if ($ziel > $ist );;{;;# setze zustand der lampe - steps;;$ist = $ist + $steps;;;$ist =int($ist);;;   if ($ziel < $ist );;   {;;   $ist = $ziel;;;   };;};;if ($ziel < $ist );;{;;# setze zustand der lampe - steps;;$ist = $ist - $steps; ;;$ist =int($ist);;;   if ($ziel > $ist );;   {;;   $ist = $ziel;;;   };;};;Log3( "SELF", 5, "SELF: SETTING ".$ist );;;fhem("set HM_1F675D pct $ist");;;}#[NF]#[NF]delay1#[NF]delay1#[NF]00:00:00#[NF]00:00:00#[NF]#[NF]#[NF]0#[NF]0#[NF]3#[NF]0#[ND]FreeCmd-AbsCmd2#[NF]cmd#[NF]cmd#[NF]setreading $SELF ziel [$SELF:Parameter]#[NF]set $SELF del_delays#[NF]delay1#[NF]delay1#[NF]00:00:00#[NF]00:00:00#[NF]#[NF]#[NF]#[NF]#[NF]1#[NF]0#[ND]HM_1F675D-AbsCmd1#[NF]no_action#[NF]off#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF]00:00:00#[NF]00:00:00#[NF]#[NF]#[NF]#[NF]#[NF]4#[NF]0#[ND]MSwitch_Self-AbsCmd1#[NF]exec_cmd1#[NF]no_action#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF][$SELF:seconds]#[NF]00:00:00#[NF]#[NF]#[NF]#[NF]#[NF]2#[NF]0
#S .Device_Events -> no_trigger
#S .First_init -> done
#S .Trigger_Whitelist -> undef
#S .Trigger_cmd_off -> no_trigger
#S .Trigger_cmd_on -> no_trigger
#S .Trigger_condition -> undef
#S .Trigger_off -> no_trigger
#S .Trigger_on -> no_trigger
#S .Trigger_time -> undef
#S .V_Check -> V2.00
#S Trigger_device -> no_trigger
#S Trigger_log -> off
#S last_event -> MSwitch_Self-AbsCmd1_conditionon
#S .sysconf -> #test#[se]#[nl]#[nl]$special="pct#[dp]slider#[ko]0#[ko]1#[ko]100#[sp]steps#[dp]1#[ko]2#[ko]3#[ko]4#[ko]5#[ko]6#[ko]7#[ko]8#[ko]9#[ko]10#[sp]seconds#[dp]00#[dp]00#[dp]01#[ko]00#[dp]00#[dp]02#[ko]00#[dp]00#[dp]03#[ko]00#[dp]00#[dp]04#[ko]00#[dp]00#[dp]05#[ko]00#[dp]00#[dp]06#[ko]00#[dp]00#[dp]07#[ko]00#[dp]00#[dp]08#[ko]00#[dp]00#[dp]09#[ko]00#[dp]00#[dp]10#[ko]00#[dp]00#[dp]30"#[sp]#[se]#[nl]#[nl]#[nl]#[nl]if#[sp]($cmd#[sp]eq#[sp]"steps")#[nl]{#[nl]MSwitch_LOG(#[sp]$name#[ko]#[sp]5#[ko]#[sp]"setting#[sp]STEPS#[sp]#[dp]#[sp]$cmd#[sp]$args[0]"#[sp])#[se]#[nl]readingsSingleUpdate(#[sp]$hash#[ko]#[sp]"steps"#[ko]#[sp]$args[0]#[ko]#[sp]1#[sp])#[se]#[nl]return#[sp]"exit"#[se]#[nl]}#[nl]#[nl]if#[sp]($cmd#[sp]eq#[sp]"seconds")#[nl]{#[nl]MSwitch_LOG(#[sp]$name#[ko]#[sp]5#[ko]#[sp]"setting#[sp]STEPS#[sp]#[dp]#[sp]$cmd#[sp]$args[0]"#[sp])#[se]#[nl]readingsSingleUpdate(#[sp]$hash#[ko]#[sp]"seconds"#[ko]#[sp]$args[0]#[ko]#[sp]1#[sp])#[se]#[nl]return#[sp]"exit"#[se]#[nl]}#[nl]#[nl]#[nl]#[nl]if#[sp]($cmd#[sp]eq#[sp]"on"#[sp]#[wa]#[wa]#[sp]$cmd#[sp]eq#[sp]"off"#[sp]#[wa]#[wa]#[sp]$cmd#[sp]eq#[sp]"pct")#[nl]{#[nl]$args[0]#[sp]=""#[sp]if#[sp]#[sp]!defined#[sp]$args[0]#[se]#[nl]my#[sp]$arg#[sp]=#[sp]$args[0]#[se]#[nl]#[sp]if#[sp]($cmd#[sp]eq#[sp]"on"#[sp]#[wa]#[wa]#[sp]$cmd#[sp]eq#[sp]"off"#[sp]#[sp]#[wa]#[wa]#[sp]$cmd#[sp]eq#[sp]"pct")#[nl]#[sp]{#[nl]#[sp]if#[sp]($cmd#[sp]eq#[sp]"pct"#[sp]&&#[sp]$arg#[sp]eq#[sp]#[st]0#[st])#[nl]#[sp]{#[nl]#[sp]$cmd#[sp]=#[st]off#[st]#[se]#[nl]#[sp]#[sp]}#[nl]if#[sp]($cmd#[sp]eq#[sp]"pct"#[sp]&&#[sp]$arg#[sp]ne#[sp]#[st]0#[st])#[nl]{#[nl]$cmd#[sp]=#[st]on#[st]#[se]#[nl]}#[sp]#[sp]#[sp]#[nl]#[sp]if#[sp](#[sp]$cmd#[sp]eq#[sp]#[st]on#[st]#[sp]&&#[sp]$arg#[sp]eq#[sp]#[st]#[st])#[nl]{#[nl]$args[0]#[sp]=#[sp]ReadingsVal(#[sp]$name#[ko]#[sp]#[st]pct#[st]#[ko]#[sp]100)#[se]#[nl]}#[nl]#[nl]if#[sp](#[sp]$cmd#[sp]eq#[sp]#[st]off#[st]#[sp]&&#[sp]$arg#[sp]eq#[sp]#[st]#[st]#[sp]#[sp]#[sp]#[sp])#[nl]{#[nl]$args[0]#[sp]=#[sp]0#[se]#[nl]}#[nl]readingsSingleUpdate(#[sp]$hash#[ko]#[sp]"pct"#[ko]#[sp]$args[0]#[ko]#[sp]1#[sp])#[se]#[nl]}#[nl]}#[nl]#[nl]#[nl]return#[sp]"end"#[se]#[nl]#[nl]
#S state -> on
#S Sys_Extension -> on
#A MSwitch_Expert -> 1
#A webCmd -> on:off:pct:steps:seconds
#A MSwitch_Debug -> 0
#A disable -> 0
#A MSwitch_Include_Webcmds -> 1
#A MSwitch_Delete_Delays -> 0
#A room -> 1_Test
#A MSwitch_Extensions -> 0
#A MSwitch_Lock_Quickedit -> 1
#A MSwitch_Mode -> Full
#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_Include_MSwitchcmds -> 0
#A MSwitch_Include_Devicecmds -> 1
#A MSwitch_Safemode -> 0


gruss Byte09

Esjay

Zitat von: Esjay am 03 September 2018, 20:40:57
Nabend Byte,
Hast du zufällig etwas an dem Modul geändert zwecks der verwendung der Pipes?
#V V1.74
#S .Device_Affected -> Flur-AbsCmd1,ReceiverAxBox4K-AbsCmd1,TelegramBot-AbsCmd1
#S .Device_Affected_Details -> Flur-AbsCmd1,Speak,no_action,45~de~#[wa]Ton#[wa]~Am~[myAbfall.next_weekday]~wird~[ArtikelMuell.state]~[myAbfall.next_text]~abgeholt~heute~ist~[Wochentag.state],,delay1,delay1,000000,000000,[Haus#[dp]state]#[sp]eq#[sp]"home",000000,home~eq~"home",0,1|ReceiverAxBox4K-AbsCmd1,showText,no_action,Am~[myAbfall.next_weekday]~wird~[ArtikelMuell.state]~[myAbfall.next_text]~abgeholt~heute~ist~[Wochentag.state],,delay1,delay1,000000,000000,[Haus#[dp]state]#[sp]eq#[sp]"home",,,,1|TelegramBot-AbsCmd1,msg,no_action,@#Home~Am~[myAbfall.next_weekday]~wird~[ArtikelMuell.state]~[myAbfall.next_text]~abgeholt~heute~ist~[Wochentag.state],,delay1,delay1,000000,000000,[Haus#[dp]state]#[sp]ne#[sp]"home",,,,1
#S .Device_Events -> no_trigger
#S .First_init -> done
#S .Trigger_Whitelist -> undef
#S .Trigger_cmd_off -> no_trigger
#S .Trigger_cmd_on -> no_trigger
#S .Trigger_condition ->
#S .Trigger_off -> no_trigger
#S .Trigger_on -> no_trigger
#S .Trigger_time -> on[18:30][19:30][20:30]~off~ononly~offonly
#S .V_Check -> V 1.2
#S Trigger_device -> no_trigger
#S Trigger_log -> off
#S last_event -> undef
#S state -> on
#A MSwitch_Include_Devicecmds -> 1
#A MSwitch_Help -> 1
#A MSwitch_Include_MSwitchcmds -> 0
#A MSwitch_Extensions -> 0
#A MSwitch_Expert -> 0
#A MSwitch_Include_Webcmds -> 0
#A MSwitch_Delete_Delays -> 1
#A MSwitch_Ignore_Types -> notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
#A MSwitch_Mode -> Full
#A room -> MSwitch
#A MSwitch_Lock_Quickedit -> 1


Wenn ich den Command über "set Muelinfo exec_cmd1" ausführe ist alles in Ordnung.

Führt das Modul ihn über den Timer aus, kommt das bei raus.

Siehe Exec_cmd

Internals:
   NAME       MuellInfo
   NOTIFYDEV  no_trigger
   NR         284
   NTFY_ORDER 45-MuellInfo
   STATE      on
   TYPE       MSwitch
   Version    V1.74
   READINGS:
     2018-09-03 20:30:00   EVENT           MuellInfo:execute_timer_P1:20:30
     2018-09-03 20:30:00   EVTFULL         MuellInfo:execute_timer_P1:20:30
     2018-09-03 20:30:00   EVTPART1        MuellInfo
     2018-09-03 20:30:00   EVTPART2        execute_timer_P1
     2018-09-03 20:30:00   EVTPART3        20:30
     2018-09-03 20:30:00   Exec_cmd        set Flur Speak 45 de #[wa]Ton#[wa] Am [myAbfall:next_weekday] wird [ArtikelMuell:state] [myAbfall:ne....
     2018-09-03 20:15:26   Trigger_device  no_trigger
     2018-07-26 20:12:23   Trigger_log     off
     2018-09-03 20:30:00   state           on
   helper:
     conditioncheck if (ReadingsVal('Haus', 'state', 'undef') ne "home"){$answer = 'true';} else {$answer = 'false';}
     savemodeblock:
     timer:
       1535999400-1 1535999400-1
       1536012010 1536012010-5
Attributes:
   MSwitch_Delete_Delays 1
   MSwitch_Expert 0
   MSwitch_Extensions 0
   MSwitch_Help 1
   MSwitch_Ignore_Types notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
   MSwitch_Include_Devicecmds 1
   MSwitch_Include_MSwitchcmds 0
   MSwitch_Include_Webcmds 0
   MSwitch_Lock_Quickedit 1
   MSwitch_Mode Full
   room       MSwitch





Grüße

Moin Byte09,
Das Problem tritt wieder auf  :)

Zitat von: Byte09 am 24 September 2018, 17:01:29
Codeschnipsel:

MSwitch-Configuration  um 'soft' zu dimmen.

Da ich doch einige Dimmer betreibe, die keine ramptime etc unterstützen , bzw nicht über register beinflussbar sind habe ich mal dieses MSwitch gebastelt, welches beliebige Dimmer soft dimmt. die Dimmgeschwindigkeit ist dabei über zwei dropdowns einstellbar ( siehe Bild ). Voraussetzung ist , das das Dimmdevice sowohl das reading ptc hat , als auch den Befehl set ptc ... versteht.

vorgehen : leeres MSwitch-Device erstellen , anhängenden Configfile einspielen - Frage nach zu dimmendem Device beantworten - fertig. Würde mich freuen , wenn es mal jemand testen würde. Umbau auf andere readings/sets ist möglich. Das Configfile benötigt mindestensdie Modulversion V2.0.


über die beiden dropdowns wird zum einen die Verzögerungszeit eingestellt , zum anderen die 'Dimmschritte' per durchlauf.

10 - 00:00:10 -alle 10 sekunden wird um 10% gedimmt

Bei entsprechender restlicher Systemkonfiguration ( genericDeviceType-light etc. ) ist dieses Device direkt über Alexa ansprechbar : Schalte Device XX%


PS:In einer Variante dieses Devices betreibe ich auch meine Tradfri etc. Lampen (MQTT) . Diese Version hat einen 'vogeschalteten' Linearschalter, da diese über MQTT einen Dimmbereich von 0 - 256 haben , Alexa z.B aber nur bis 100% versteht ( glaube ich ). Bei Interesse oder Bedarf -> kurze Anfrage hier.
.......
.
.
..
.
.
.
gruss Byte09

Funktioniert sehr gut. Schöne Sache in Verbindung mit Twilight.

Grüße


Byte09

#448
Shit , da habe ich nicht aufgepasst .  Ist morgen früh im update behoben.

vorab im anhang

Gruss Byte09

Gesendet von meinem SM-G900F mit Tapatalk

edit: ich habe da probleme und muss mir das heute abend nochmal genauer anschauen.

Bäschdler

Hi,

eine Frage noch: ich habe bisher bei einigen Fahrbefehlen einen manuellen Logbucheintrag mittels


trigger man_log_OG_Buero_Roll_Garten log "Rolladen Abschattung auf Position 60 % fahren"


erzeugt. Kann ich das auch mittels MSwitch machen und wenn ja wie?

Danke und Grüsse
Bäschdler