98_MSwitch - Support

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

Vorheriges Thema - Nächstes Thema

Wolle02

Moin zusammen,

Zitat von: Byte09 am 23 November 2019, 08:19:49


{
my $T=ReadingsVal("THGR122NX_2_WZ","temperature",18.0);
fhem("set virtualCCU_WZ_Sensor1 virtTemp $T");
fhem("set virtualCCU_WZ_Sensor2 virtTemp $T");
}


sollte gehen . wenn nicht sag mir kurz bescheid, dann muss ich es selber testen.


Kann ich bestätigen, dass das geht. So ein Konstrukt habe ich bei mir auch am Laufen und es funktioniert einwandfrei.

Gruß
Wolle

Panik

Hallo Byte09 und Wolle02,

es geht jetzt beides  :)

@Byte09: Ist es möglich, hinter dem CMD1/2 einen Testbutton zu setzen, der nur diese eine Aktion testweise auslöst?
Raspberry3+,  CUL USB V3 mit V 1.66 CUL868, TRXRFX433, HM-MOD-UART, Phoscon-GW

Panik

Noch ne Frage:

Ich habe ein Schalter, der halbstündig eine Auslösekette [00:30*00:00-23:59]anregt.

Einer der vielen Auslöser soll dann allerdings nur in einem eigenen Zeitraum - stündlich erfolgen.
Den Zeitraum konnte ich eingrenzen: [08:00-22:00] , aber in der Schaltbedingung kriege ich es
dieses stündlich nicht hin:  [01:00*08:00-22:00].
Gibts da nen Trick bzw. Workaround?
Raspberry3+,  CUL USB V3 mit V 1.66 CUL868, TRXRFX433, HM-MOD-UART, Phoscon-GW

Byte09

Zitat von: Panik am 23 November 2019, 18:47:51
Noch ne Frage:

Ich habe ein Schalter, der halbstündig eine Auslösekette [00:30*00:00-23:59]anregt.

Einer der vielen Auslöser soll dann allerdings nur in einem eigenen Zeitraum - stündlich erfolgen.
Den Zeitraum konnte ich eingrenzen: [08:00-22:00] , aber in der Schaltbedingung kriege ich es
dieses stündlich nicht hin:  [01:00*08:00-22:00].
Gibts da nen Trick bzw. Workaround?
hi Panik,

bin heute abend unterwegs und komme erst morgen dazu, mir dein problem anzuschauen. ich fürchte aber wir werden dazu kurz telefonieren müssen... auf die schnelle jedenfalls kann ich es nicht ganz nachvollziehen. kannst du vorab mal eine raw schicken, von dem was du hast?

gruss thomas

Gesendet von meinem ELE-L29 mit Tapatalk


Byte09

#889
Zitat von: Panik am 23 November 2019, 18:47:51
Noch ne Frage:

Ich habe ein Schalter, der halbstündig eine Auslösekette [00:30*00:00-23:59]anregt.

Einer der vielen Auslöser soll dann allerdings nur in einem eigenen Zeitraum - stündlich erfolgen.
Den Zeitraum konnte ich eingrenzen: [08:00-22:00] , aber in der Schaltbedingung kriege ich es
dieses stündlich nicht hin:  [01:00*08:00-22:00].
Gibts da nen Trick bzw. Workaround?

moin,

ich habe mir deine raw ( aus der PM ) mal angesehen und glaube zu wissen was du möchtest. das ist ein weinig twiggy und ich sehe nur eine möglichkeit.

du lässt alle 30 minuten den timer ausführen , beginnend um 00:01 .
Zitat[00:30*00:01-23:59]
das heisst die timer werden IMMER in der minute 01 und 31 ausgeführt. nur darauf kannst du testen , wenn du einen befehl nur jeden zweiten timer ausführen willst.

bei jedem auslösen eines timers erzeugt des device ein eigenes event in folgender form:

MSW_Kamera_Watchdog:execute_timer_P1:08:01
MSW_Kamera_Watchdog:execute_timer_P1:08:31
.
.
usw


jetzt würde ich in den schaltbedingungen auf die vorletze zahl testen , und ein schalten nur dann zulassen , wenn diese eine 3 ist. testen lässt sich das mit entsprechender regex:3[\d]$

damit diese regex 'wahr' wird müssen am ende des events ('$' steht hier für zeilenende) 2 zahlen stehen . Die erste muss eine 3 sein , die zweite kann beliebig sein aber einstellig ([\d]).

da diese Bedingung nur in jedem zweiten auslösen auftritt, wird die bedingung in jeder ersten auslösung nicht wahr sein.

Ergänze dazu bitte die Schaltbedingung , die du nur jedes zweit mal ausführen willst wie folgt:

Zitat(([TWL:light]>5) OR (([anwesend:state] ne "eins") OR ([anwesend:state] ne "drei")) AND "$EVENT" =~ m/3[\d]$/)

durch die Bedingung AND [08:00-22:00] kannst du das natürlich noch weiter einschränken .

ich habe das jetzt nicht getestet , sollte aber funktionieren . Bitte daran denken , das das vorkommen entsprechender zahl in direkter abhängigkeit zu den auslösezeiten der timer steht.

durch anpassung der regex kannst du im grunde steuern bei jeder wievielten auslösung geschaltet werden soll - die regex wird dann halt etwas komplizierter.

sei so gut und gib mir bescheid ob es klappt .

Zitat@Byte09: Ist es möglich, hinter dem CMD1/2 einen Testbutton zu setzen, der nur diese eine Aktion testweise auslöst?
.... das schaue ich mir die tage mal an .

zu der frage bezüglich
defmod di_midnight DOIF ([+[1]:00] or [00:01] or [23:59]) ({addLog_script()})
muss ich passen , bis du mir hier auf die sprünge hilfst. ich habe keine ahnung was dieses DOIF tut, bzw wann es das tut - und mag mich damit (DOIF) auch nicht beschäftigen  ;)

gruss thomas

edit: bei devices die  bereits so umfangreich sind würde ich dir empfehlen die kommentarfunktion anzuschalten und die auszuführenden befehle zu kommentieren , sonst weisst du ( geht mir zumindest so ) in einigen wochen nicht mehr , was eigentlich passiert  ;)

khk123

#890
Hi Byte09,

ich will einen Befehl alle 30 Minuten absetzen. Die Syntax von at +*00:30 geht nicht. Etwas umständlicher mit [00:30*00:00-23:49] funktioniert es. Ist aber nicht das Gleiche, da at auf die aktuelle Zeit die 30 Minuten rechnet und MSwitch ab 00:00 das 30 Minuten-Intervall rechnet. Oder hab ich etwas übersehen?

Viele Grüße
Karlheinz
FHEM6.2, RasPi4, RasPi Zero W,
CUL V3, HM, ZWave, IT, vcontrol, owntracks, alexa

Byte09

Zitat von: khk123 am 24 November 2019, 11:33:41
Hi Byte09,

ich will einen Befehl alle 30 Minuten absetzen. Die Syntax von at +*00:30 geht nicht. Etwas umständlicher mit [00:30*00:00-23:49] funktioniert es. Oder hab ich etwas übersehen?

Viele Grüße
Karlheinz

ja, das ist richtig . die korrekte MSwitch-Syntax lautet :
ZitatSonderformate:
[?20:00-21:00|5] - Zufälliger Schaltvorgang zwischen 20 Uhr und 21 Uhr am Freitag
[00:02*04:10-06:30] - Schaltvorgang alle 2 Minuten zwischen 4.10 Uhr und 6.30 Uhr

Hintergund dessen, dass immer der Zeitraum mit definiert werden muss ist der, dass ich nicht wollte , das wilkürlich alle 30 minuten geschaltet wird, sondern alle 30 minuten ab einem definierten startzeitpunkt. Das bietet aus meiner perspektive einige Vorteile ( siehe die letzten 2-3 posts ) auch wenn die Syntax etwas länger wird.

die andere Version ist ... glaube ich ... DOIFSyntax ?!

gruss Byte09

khk123

nein, ist die Syntax von AT.

Viele Grüße
Karlheinz
FHEM6.2, RasPi4, RasPi Zero W,
CUL V3, HM, ZWave, IT, vcontrol, owntracks, alexa

Byte09

Zitat von: khk123 am 24 November 2019, 12:04:46
nein, ist die Syntax von AT.

Viele Grüße
Karlheinz

nutze ich beides nicht  ;)

gruss Byte09

khk123

Kann es sein, dass wenn ich ein MSwitch-Device mit rename umbenenne (z.B. FHEM_psize in FHEM_pSize), die alten Timer übrigbleiben und ins Leere laufen. Erst ein set inactive/set active korrigiert das.

2019.11.24 13:30:00 1: ERROR: empty name in readingsBeginUpdate
2019.11.24 13:30:00 1: stacktrace:
2019.11.24 13:30:00 1:     main::readingsBeginUpdate           called by fhem.pl (4917)
2019.11.24 13:30:00 1:     main::readingsSingleUpdate          called by ./FHEM/98_MSwitch.pm (9866)
2019.11.24 13:30:00 1:     main::MSwitch_Execute_Timer         called by fhem.pl (3297)
2019.11.24 13:30:00 1:     main::HandleTimeout                 called by fhem.pl (677)
2019.11.24 13:30:00 1: readingsUpdate(,last_activation_by,timer) missed to call readingsBeginUpdate first.
2019.11.24 13:30:00 1: stacktrace:
2019.11.24 13:30:00 1:     main::readingsBulkUpdate            called by fhem.pl (4918)
2019.11.24 13:30:00 1:     main::readingsSingleUpdate          called by ./FHEM/98_MSwitch.pm (9866)
2019.11.24 13:30:00 1:     main::MSwitch_Execute_Timer         called by fhem.pl (3297)
2019.11.24 13:30:00 1:     main::HandleTimeout                 called by fhem.pl (677)
2019.11.24 13:30:00 1: ERROR: empty name in readingsBeginUpdate
2019.11.24 13:30:00 1: stacktrace:
2019.11.24 13:30:00 1:     main::readingsBeginUpdate           called by ./FHEM/98_MSwitch.pm (9895)
2019.11.24 13:30:00 1:     main::MSwitch_Execute_Timer         called by fhem.pl (3297)
2019.11.24 13:30:00 1:     main::HandleTimeout                 called by fhem.pl (677)
2019.11.24 13:30:00 1: readingsUpdate(,EVENT,FHEM_psize:execute_timer_P3:13:30) missed to call readingsBeginUpdate first.
2019.11.24 13:30:00 1: stacktrace:
2019.11.24 13:30:00 1:     main::readingsBulkUpdate            called by ./FHEM/98_MSwitch.pm (9896)
2019.11.24 13:30:00 1:     main::MSwitch_Execute_Timer         called by fhem.pl (3297)
2019.11.24 13:30:00 1:     main::HandleTimeout                 called by fhem.pl (677)
2019.11.24 13:30:00 1: readingsUpdate(,EVTFULL,FHEM_psize:execute_timer_P3:13:30) missed to call readingsBeginUpdate first.
2019.11.24 13:30:00 1: stacktrace:
2019.11.24 13:30:00 1:     main::readingsBulkUpdate            called by ./FHEM/98_MSwitch.pm (9898)
2019.11.24 13:30:00 1:     main::MSwitch_Execute_Timer         called by fhem.pl (3297)
2019.11.24 13:30:00 1:     main::HandleTimeout                 called by fhem.pl (677)
2019.11.24 13:30:00 1: readingsUpdate(,EVTPART1,FHEM_psize) missed to call readingsBeginUpdate first.
2019.11.24 13:30:00 1: stacktrace:
2019.11.24 13:30:00 1:     main::readingsBulkUpdate            called by ./FHEM/98_MSwitch.pm (9900)
2019.11.24 13:30:00 1:     main::MSwitch_Execute_Timer         called by fhem.pl (3297)
2019.11.24 13:30:00 1:     main::HandleTimeout                 called by fhem.pl (677)
2019.11.24 13:30:00 1: readingsUpdate(,EVTPART2,execute_timer_P3) missed to call readingsBeginUpdate first.
2019.11.24 13:30:00 1: stacktrace:
2019.11.24 13:30:00 1:     main::readingsBulkUpdate            called by ./FHEM/98_MSwitch.pm (9901)
2019.11.24 13:30:00 1:     main::MSwitch_Execute_Timer         called by fhem.pl (3297)
2019.11.24 13:30:00 1:     main::HandleTimeout                 called by fhem.pl (677)
2019.11.24 13:30:00 1: readingsUpdate(,EVTPART3,13:30) missed to call readingsBeginUpdate first.
FHEM6.2, RasPi4, RasPi Zero W,
CUL V3, HM, ZWave, IT, vcontrol, owntracks, alexa

khk123

#895
Ich glaube nicht das set inactive/set active hat den Fehler korrigiert, sondern das Verändern der Triggerzeit.

Edit 15:09: Scheint doch nicht so zu sein. Der Fehler taucht immer noch auf.
FHEM6.2, RasPi4, RasPi Zero W,
CUL V3, HM, ZWave, IT, vcontrol, owntracks, alexa

Panik

Hallo Byte09,

ich probier das mit
AND "$EVENT" =~ m/3[\d]$/)
und gebe Bescheid.


Zum DOIF:


defmod di_midnight DOIF ([+[1]:00] or [00:01] or [23:59]) ({addLog_script()})


Das ist ein DOIF-Device Namens "di_midnight", welches jeder volle Stunde oder um 00:01Uhr oder
um 23:59Uhr zu der Subroutine "addLog_script()" springt und dortige Anweisungen ausführt.

Wie ließe sich sowas mit MSwitch umsetzen?
Also Ausführungen zu jeder volle Stunde oder um 00:01Uhr oder um 23:59Uhr ?


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

Byte09

Zitat von: khk123 am 24 November 2019, 14:31:07
Ich glaube nicht das set inactive/set active hat den Fehler korrigiert, sondern das Verändern der Triggerzeit.

Edit 15:09: Scheint doch nicht so zu sein. Der Fehler taucht immer noch auf.

ich habe mir das gerade angeschaut und du hast recht. den fehler kannst du auch nicht beheben , er wird weiter versuchen die gesetzten timer abzuarbeiten , bis heute nacht 00:00.

nur neustart wird es beheben.

ich behebe das problem und stekle ein update ein.

gruss Byte09

Byte09

Zitat von: Panik am 24 November 2019, 15:11:16
Hallo Byte09,

ich probier das mit
AND "$EVENT" =~ m/3[\d]$/)
und gebe Bescheid.


Zum DOIF:


defmod di_midnight DOIF ([+[1]:00] or [00:01] or [23:59]) ({addLog_script()})


Das ist ein DOIF-Device Namens "di_midnight", welches jeder volle Stunde oder um 00:01Uhr oder
um 23:59Uhr zu der Subroutine "addLog_script()" springt und dortige Anweisungen ausführt.

Wie ließe sich sowas mit MSwitch umsetzen?
Also Ausführungen zu jeder volle Stunde oder um 00:01Uhr oder um 23:59Uhr ?

sollte so gehen :
[01:00*00:00-23:59][00:01][23:59]

gruss thomas

khk123

#899
Hi Byte09,

kann ich mit MSwitch nur an einem bestimmten Datum schalten?

Beispiel mit at:

define ZaehlerReset at *23:59:00 {if($year==2019 && $month==12 && $mday==31) {fhem("set Zaehler reset")} }


oder

define ZaehlerReset at 2019-12-31T23:59:00 set Zaehler reset
FHEM6.2, RasPi4, RasPi Zero W,
CUL V3, HM, ZWave, IT, vcontrol, owntracks, alexa