98_MSwitch - Support

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

Vorheriges Thema - Nächstes Thema

Byte09

Zitat von: Torsten_MG am 02 September 2018, 17:31:19
Habe es jetzt ganz anders gelöst. Der Weg war viel einfacher.[emoji16]

Da ich ja MQTT_GENERIC_BRIDGE installiert habe, brauchte ich ja im Lampen Device nur mqttPublish zu aktivieren [emoji41]

Gesendet von meinem SM-J730F mit Tapatalk

ZitatViele Wege führen nach Rom
;)

Panik

Hallo,

ich habe einen Dummy als Trigger und der ist "eins" als State
Prüfe ich die conditions erhalte ich merkwürdigerweise ein unwahre Ergebnis. :o
Was ist falsch?

eingehender String:
[anwesend:State] eq "eins"

If Anweisung Perl:
if ( ReadingsVal('anwesend', 'State', 'undef') eq "eins"){$answer = 'true';} else {$answer = 'false';}

Bedingung ist nicht Wahr und wird nicht ausgeführt
Raspberry3+,  CUL USB V3 mit V 1.66 CUL868, TRXRFX433, HM-MOD-UART, Phoscon-GW

Panik

Antwort an mich  ;)

nicht "State" sondern "state" ist zu schreiben
Vielleicht kann das ja noch großzügiger behandelt werden...

Aber das Modul ist Klasse.
Besonders die Hilfestellungen mit den Fragezeichen und weitere
Schmankerl mit den ganzen Einstellmöglichkeiten über das Webinterface.
So würde man es sich auch bei anderen Modulen wünschen ...
Raspberry3+,  CUL USB V3 mit V 1.66 CUL868, TRXRFX433, HM-MOD-UART, Phoscon-GW

Byte09

Zitat von: Panik am 03 September 2018, 16:52:15
Antwort an mich  ;)

nicht "State" sondern "state" ist zu schreiben
Vielleicht kann das ja noch großzügiger behandelt werden...

Aber das Modul ist Klasse.
Besonders die Hilfestellungen mit den Fragezeichen und weitere
Schmankerl mit den ganzen Einstellmöglichkeiten über das Webinterface.
So würde man es sich auch bei anderen Modulen wünschen ...

problem selber gelöst  ;), thx für den rest

ZitatVielleicht kann das ja noch großzügiger behandelt werden...

möchte ich ungerne, da ja alle möglichen readings etc. geprüft werden können und es ggf. ja mal vorkommen kann, dass da Gross und Kleinschreibung den kleinen Unterschied machen , falls wirklich ( obwohl unwahrscheinlich ) mal beides in einem Device vorhanden sein sollte.

gruss Byte09

Byte09

ich habe den letzten Beitrag zum Anlass genommen , die Ausgabe bei check conditions etwas zu erweitern. Ab der kommenden Version wird der Status aller geprüften Readings mit angezeigt.

eingehender String:
[HARMONY:activity] ne "PowerOff"

If Anweisung Perl:
if (ReadingsVal('HARMONY', 'activity', 'undef') ne "PowerOff"){$answer = 'true';} else {$answer = 'false';}

Bedingung ist nicht Wahr und wird nicht ausgeführt

States der geprüften Readings:
Reading: [HARMONY:activity] - Inhalt: PowerOff


gruss Byte09

Esjay

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

Byte09

#411
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

in der tat habe ich da etwas geändert und habe da etwas verbockt. versuche in 10 minuten einen fix hier einzustellen

gruss Byte09


Byte09

Ich habe eben einen FIX in das SVN geladen , der das Problem hoffentlich beseitigt.

gruss Byte09

Byte09

#413
V1.75 ab morgen im SVN

Webinterface geändert: Bei Datenänderung in einem Abschnitt wird das Speichern in allen anderen Abschnitten gesperrt, bis die Daten gespeichert wurden , oder wieder im Ursprungszustand sind.
( mal sehen , weiss noch nicht ob das der Weisheit letzter Schluss ist )

Mit dem Befehl on und off kann nun ein weiteres Argument übergeben werden set <device> on/off <parameter>. dieses wird als allererste Aktion im Reading 'Parameter' gespeichert und kann somit in jeder Aktion genutzt werden.

Behandlung von Readingaktivierten Sonderfällen/Modes.
- Zuschalten von besonderen Modes, die aber so speziell sind, dass ich sie nicht über attribute schaltbar machen möchte. Im Grunde nur aus Eigenbedarf , mehr dazu falls mal irgendwo Bedarf besteht

FIX: setmagic / ersetzungen

gruss Byte09



Byte09

#414
kommendes Update auf V1.76

- Logverhalten:
überarbeitet

- Bugfix:
im 'cmd2' wurde fälschlicher Weise versucht den Eintrag 'no_action' als Befehl  'no:action' an betreffendes Device abzusetzen. Das hat die Funtion erstmal nicht beeinträchtigt, sorgte aber unter umständen für 'unschöne' Fehlermeldungen im Log.
Dieses wurde behoben

- Funktionserweiterung Expertenmodus:
neben dem Auswahlfeld 'priority' steht nun ein weiteres Feld 'ID' zur Verfügung. Dieses steht standartmässig auf '-' kann aber auf eine ID gessetzt werden.
Die Auswahlmöglichkeiten der ID stehen in direktem Zusammenhang zur Anzahl der 'affected devices'.

Sobald der Wert von '-' auf eine ID gesetzt wird, wird dieses Device im normalen Programmablauf nicht mehr berücksichtigt ( es finden keine Schaltvorgänge statt ). Dier hier gesetze Befehl (oder Freecmd) kann aber separat aufgerufen werden set <DEVICE> <exec_cmd1>/<exec_cmd2> ID <NUMMER>Sollte das MSwitch Device selber in der Liste der 'affected devices' stehen , so werde diese Befehle direkt in entsprechenden Feldern angeboten.

Sollten mehrere 'affected Devices' die gleiche ID haben , werden mit entsprechendem Aufruf alle 'cmds' mit entsprechender ID ausgeführt.
Hintergund dieser Erweiterung ist der, das unter Umständen Befehle / Befehlsketten ausgeführt werden sollen , die völlig unabhängig von einem bestimmten 'Schalten' sind. Ich werde in den kommenden Tagen einige Beispieldevices in das Wiki stellen , die diese Funtion nutzen.
Im Normalmodus bleibt hier alles beim alten, ebenso im Expertenmode, wenn keine IDs zugewiesen werden.

- Funtionserweiterung durch Reading
Diese Option erwähne ich hier nur, damit bekannt ist das sie da ist, und niemand durch zufall darauf stösst und sich damit seine Fheminstallation 'verbiegt'. Ein Eintrag hier ist im Grunde ein direkter Eingriff in den Modulcode !
Durch setzten des Readings 'Sys_Extension' -> 'on' wird eine weiter Option in den Get Kommados aktiviert ( 'get_sysextension' ). Hier ist es Möglich , Perlcode einzutragen , der der nach bestimmten Kriterien an bestimmten Punkten des Codes ausgeführt wird.

Hintergund ist hier der, das ich so die Möglichkeit habe , gewisse 'Sonderanpassungen' zu machen , die ich aber nicht grundsätzlich im Modul habe möchte , da der  'allgemeine' Umfang einfach gesprengt werden würde. So kann ich Anpassungen nur für bestimmte Devices ermöglichen.

Als Beispiel habe ich jedem Dimmer ein MSwitch vorgeschaltet , um bestimmte Aktionen nach bestimmten Bedingungen zu ermöglichen , die das Dimmerdevice so nicht hergiebt. Gleichzeitig möchte ich dieses Device aber auch genau wie einen Dimmer Bedienen können. Dazu muss das Modul aber mit dem Befehl 'pct' umgehen können , da ansonsten u.A. gar keine Parameter zu 'on' oder 'off' zugelassen wären. Dazu habe ich an dieser Stelle z.b diesen code erweitert.
$special='pct:slider,0,1,100';
my $arg = $args[0];
if ($cmd eq "pct" && $arg eq '0')
{
$cmd ='off';
}
if ($cmd eq "pct" && $arg ne '0')
{
$cmd ='on';
}   
if ( $cmd eq 'on' && $arg eq '')
{
$args[0] = ReadingsVal( $name, 'pct', 100);
}
if ( $cmd eq 'off' && $arg eq ''    )
{
$args[0] = 0;
}
readingsSingleUpdate( $hash, "pct", $args[0], 1 );


stark vereinfacht um um den Hintergrund dieser Möglichkeit zu erklären, diese hier könnte man in diesem Fall auch anders bezwecken.
Diese Möglichkeit sollte im Grunde nicht genutzt werden, sondern ich möchte hiermit auf Userwünsche und oder spezielle Anforderungen eingehen können.

gruss Byte09





Panik

Hallo,

ich habe ein MSwitch, mit den Trigger-Einstellungen im Bild.
Werktags funktioniert es perfekt.
Heute hatte ich Urlaub. Da sollte es nicht auslösen. Hat es aber dennoch.
Die Trigger condition ist aber nachweisbar richtig und bringt heute auch "nicht wahr"

Muss ich das Trigger-Gebilde anders aufbauen?

Raspberry3+,  CUL USB V3 mit V 1.66 CUL868, TRXRFX433, HM-MOD-UART, Phoscon-GW

Byte09

#416
Zitat von: Panik am 10 September 2018, 16:01:08
Hallo,

ich habe ein MSwitch, mit den Trigger-Einstellungen im Bild.
Werktags funktioniert es perfekt.
Heute hatte ich Urlaub. Da sollte es nicht auslösen. Hat es aber dennoch.
Die Trigger condition ist aber nachweisbar richtig und bringt heute auch "nicht wahr"

Muss ich das Trigger-Gebilde anders aufbauen?

Hi , hab es auf die schnelle bei mir mal gechecked, scheint aber auf den 1 blick alles OK. Mal ganz dumm gerfagt, '$we' weiss auch , dass du heute urlaub hast ? ist das in der holiday definiert ?

was liefert denn ein
{$we}
in der kommandozeile ?  .... müsste dann ja heute bei dir eine 1 zurückgeben ?

gruss Byte09


Edit: die Triggerconditionen greifen nicht bei einer reinen Zeitsteuerung in der Grundeinstellung  . Das $we müsste hier auch ausreichend sein , wenn holiday definiert ist .

Deine einstellung ist auch im 'normalmode/grundeinstellung', das siehst du an : "Trigger condition (events only): ". soll die condition auch bei reiner zeitsteuerung greifen , musst du das attribut 'MSwitch_Condition_Time' auf 1 setzen , dann greift es auch für zeiten und es sollte dort stehen : "Trigger condition (time&events): "

Auszug Hilfetxt :
ZitatAchtung: Conditions gelten nur für auslösende Trigger eines Devices und haben keinen Einfluss auf zeitgesteuerte Auslöser. Um Zeitgesteuerte Auslösr ebenfalls an Bedingungen zu Knüpfen muss dieses in den Attributen aktiviert werden.

PS: so wie du das MSwitch konfiguriert hast ( zumindest beim trigger ), ist es systemschonender , wenn du das MSwitch in den reinen Notifymode bringst . Attribut 'MSwitch_Mode' auf 'Notify' , ausser du schaltest es auch manuell

Esjay

Nabend, kurze Frage.
Wie bekomme ich Repeat und Repeatdelay eingeblendet?
Geschweige denn, wo ist "without Conf-check" ?

ZitatDie Auswahl "with Conf-check" oder "without Conf-check" legt fest, ob unmittelbar vor Befehlsausführung nochmals die Condition für den Befehl geprüft wird oder nicht.


Grüße

Byte09

Zitat von: Esjay am 10 September 2018, 17:36:21
Nabend, kurze Frage.
Wie bekomme ich Repeat und Repeatdelay eingeblendet?
Geschweige denn, wo ist "without Conf-check" ?

Grüße
Kurz da Handy

Für repeats das Attribut mswitch_expert auf 1 setzen ... dann bekommst du u.a diese Optionen.   Die configoptionen befinden sich in den dropdownlisten bei den affected devices , vor den Eingabefeldern für verzögertes schalten.

Gruss byte09

Gesendet von meinem SM-G900F mit Tapatalk


Esjay

Zitat von: Byte09 am 10 September 2018, 17:40:42
Kurz da Handy

Für repeats das Attribut mswitch_expert auf 1 setzen ... dann bekommst du u.a diese Optionen.   Die configoptionen befinden sich in den dropdownlisten bei den affected devices , vor den Eingabefeldern für verzögertes schalten.

Gruss byte09

Gesendet von meinem SM-G900F mit Tapatalk

Man sollte die Texte auch zuende lesen. Sry.

Das habe ich gefunden, aber da steht ja überall nur "with cond check......."