98_MSwitch - Support

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

Vorheriges Thema - Nächstes Thema

Byte09

#150
Zitat von: Torsten_MG am 26 Mai 2018, 09:26:51
Siehe Edit ein Post drüber

ich habe mal einen Dummy angelegt, der mir folgende Events liefert:
2018-05-26 10:02:53 dummy eventtest on
2018-05-26 10:02:53 dummy eventtest triggercount: 41
2018-05-26 10:02:53 dummy eventtest trigger: Short_ 41


als zu triggerndes event habe ich mit 'add Event' folgendes Event angelegt:
trigger:Short* ... bitte das Wildcart am ende beachten.

MSwitch schaltet nun bei jedem Event, was folgenden Inhalt hat
trigger:Short<egal_was_hier_steht>

geht einwandfrei .

gruss Byte09


zum nachstellen
raw des dummys:
defmod eventtest dummy
attr eventtest room test
attr eventtest userReadings triggercount:* {ReadingsVal("$NAME","triggercount",0)+1;;;;},\
trigger:* { "Short_ ".ReadingsVal("$NAME","triggercount",0)}
attr eventtest webCmd on:off

setstate eventtest off
setstate eventtest 2018-05-26 10:08:04 state off
setstate eventtest 2018-05-26 10:08:04 trigger Short_ 54
setstate eventtest 2018-05-26 10:08:04 triggercount 54


configfile des MSwitch
#S .Device_Affected -> no_device
#S .Device_Affected_Details -> undef
#S .Device_Events -> trigger:short*|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 -> trigger:short*
#S .Trigger_time ->
#S .V_Check -> V 0.3
#S Exec_cmd -> undef
#S Trigger_device -> eventtest
#S Trigger_log -> off
#S last_event -> undef
#S state -> off
#A MSwitch_Include_MSwitchcmds -> 0
#A MSwitch_Include_Devicecmds -> 1
#A MSwitch_Expert -> 0
#A MSwitch_Extensions -> 0
#A MSwitch_Help -> 0
#A MSwitch_Mode -> Toggle
#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_Include_Webcmds -> 0
#A room -> test
#A MSwitch_Lock_Quickedit -> 1
#A MSwitch_Debug -> 0




Torsten_MG

danke für deine Bemühungen @Thomas,

ich habe es jetzt so gemacht wie auf dem Foto


aber das Problem was ich habe liegt nicht daran, dass Problem ist, ich müßte bei Trigger device: Flur_Taster1_01 mit deinem Vorschlag umsetzen für Einschalten und einen Trigger device: Flur_Taster1_02 für das Ausschalten einsetzen, da der Trigger ja auf diese beiden liegt und nicht auf Flur_Taster2. Also müßte ich ja dann 2 MSwitch machen und das ist nicht praktikabel.

Byte09

#152
Zitat von: Torsten_MG am 26 Mai 2018, 10:20:56
danke für deine Bemühungen @Thomas,

ich habe es jetzt so gemacht wie auf dem Foto


aber das Problem was ich habe liegt nicht daran, dass Problem ist, ich müßte bei Trigger device: Flur_Taster1_01 mit deinem Vorschlag umsetzen für Einschalten und einen Trigger device: Flur_Taster1_02 für das Ausschalten einsetzen, da der Trigger ja auf diese beiden liegt und nicht auf Flur_Taster2. Also müßte ich ja dann 2 MSwitch machen und das ist nicht praktikabel.

das geht auch über ein MSwitch Device,da müsstest du aber GLOBAL triggern, da du auf 2 Geräte triggern willst . Ich mache dir dazu nochmal ein Beispiel und poste es . Das sprengt hier den Rahmen es so zu erklären. Bei interesse kannst du mich auch gerna mal anrufen, würde dir die Nummer dann privat schicken.

Gruss Byte09

Byte09

#153
taster 1 (dummy)
defmod eventtest dummy
attr eventtest room test
attr eventtest userReadings triggercount:* {ReadingsVal("$NAME","triggercount",0)+1;;;;},\
trigger:* { "Short_ ".ReadingsVal("$NAME","triggercount",0)}
attr eventtest webCmd on

setstate eventtest on
setstate eventtest 2018-05-26 10:38:24 state on
setstate eventtest 2018-05-26 10:38:24 trigger Short_ 93
setstate eventtest 2018-05-26 10:38:24 triggercount 93


taster2 (dummy)
defmod eventtest1 dummy
attr eventtest1 room test
attr eventtest1 userReadings triggercount:* {ReadingsVal("$NAME","triggercount",0)+1;;;;},\
trigger:* { "Short_ ".ReadingsVal("$NAME","triggercount",0)}
attr eventtest1 webCmd on

setstate eventtest1 on
setstate eventtest1 2018-05-26 10:38:24 state on
setstate eventtest1 2018-05-26 10:38:24 trigger Short_ 9
setstate eventtest1 2018-05-26 10:38:24 triggercount 9


configfile MSwitch ( die dummys müssen erst angelegt werden )
#S .Device_Affected -> no_device
#S .Device_Affected_Details -> undef
#S .Device_Events -> eventtest:trigger:short*|eventtest1:trigger:short*|no_trigger
#S .First_init -> done
#S .Trigger_Whitelist -> eventtest,eventtest1
#S .Trigger_cmd_off -> no_trigger
#S .Trigger_cmd_on -> no_trigger
#S .Trigger_condition ->
#S .Trigger_off -> eventtest1:trigger:short*
#S .Trigger_on -> eventtest:trigger:short*
#S .Trigger_time ->
#S .V_Check -> V 0.3
#S Exec_cmd -> undef
#S Trigger_device -> all_events
#S Trigger_log -> off
#S last_event -> eventtest1:trigger:Short_
#S state -> off
#A MSwitch_Include_MSwitchcmds -> 0
#A MSwitch_Include_Devicecmds -> 1
#A MSwitch_Expert -> 1
#A MSwitch_Extensions -> 0
#A MSwitch_Help -> 1
#A MSwitch_Mode -> Full
#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_Include_Webcmds -> 0
#A room -> test
#A MSwitch_Lock_Quickedit -> 1
#A MSwitch_Debug -> 0


nach de speichern des configfiles musst du einmal auf 'modify trigger device' drücken , da das Modul intern den Mode wechseln muss, das tut er nicht automatisch beim einspielen des files.


gruss Thomas

Torsten_MG

Zu den dummys habe ich noch eine Frage:

in den Bereichen vom ReadingsVal habe ich für $Name Flur_Taster2_01 bzw. Flur_Taster2_02 eingesetzt. Was muß ich bei triggercount eingeben? Weil weder triggercount, trigger_cnt noch trigger funktioniert.

Hier mal die list von Flur_Taster2_01

Internals:
   DEF        57C3AE01
   NAME       Flur_Taster2_01
   NOTIFYDEV  global
   NR         60
   NTFY_ORDER 50-Flur_Taster2_01
   STATE      Short 1_60 (to broadcast)
   TYPE       CUL_HM
   chanNo     01
   device     Flur_Taster2
   READINGS:
     2018-05-25 16:50:00   motion          off
     2018-05-26 13:58:08   state           Short 1_60 (to broadcast)
     2018-05-26 13:58:08   trigger         Short_60
     2018-05-26 13:58:08   trigger_cnt     60
   helper:
     BNO        60
     BNOCNT     1
     regLst     ,1,4p
     expert:
       def        1
       det        0
       raw        1
       tpl        0
     role:
       chn        1
     tmpl:
Attributes:
   model      HM-Sen-MDIR-WM55
   peerIDs    00000000,
   room       Flur->Licht

Byte09

Zitat von: Torsten_MG am 26 Mai 2018, 14:01:13
Zu den dummys habe ich noch eine Frage:

in den Bereichen vom ReadingsVal habe ich für $Name Flur_Taster2_01 bzw. Flur_Taster2_02 eingesetzt. Was muß ich bei triggercount eingeben? Weil weder triggercount, trigger_cnt noch trigger funktioniert.

Hier mal die list von Flur_Taster2_01

Internals:
   DEF        57C3AE01
   NAME       Flur_Taster2_01
   NOTIFYDEV  global
   NR         60
   NTFY_ORDER 50-Flur_Taster2_01
   STATE      Short 1_60 (to broadcast)
   TYPE       CUL_HM
   chanNo     01
   device     Flur_Taster2
   READINGS:
     2018-05-25 16:50:00   motion          off
     2018-05-26 13:58:08   state           Short 1_60 (to broadcast)
     2018-05-26 13:58:08   trigger         Short_60
     2018-05-26 13:58:08   trigger_cnt     60
   helper:
     BNO        60
     BNOCNT     1
     regLst     ,1,4p
     expert:
       def        1
       det        0
       raw        1
       tpl        0
     role:
       chn        1
     tmpl:
Attributes:
   model      HM-Sen-MDIR-WM55
   peerIDs    00000000,
   room       Flur->Licht


die dummys hatte ich nur angelegt , da ich keinen entsprechenden taster habe, anstatt der Taster.

du kannst doch direkt auf die beiden taster ( die beiden namen der dummys gegen die beiden namen der taster in 'Trigger Device Global Whitelist: ' ändern ) triggern .

grundsätzlich: $NAME musst du gar nicht ändern , das wird automatisch von fhem ersetzt gegen den Namen ders Gerätes in dem (in diesem fall) das Userreading steht.

ggf. kann ich dir aber gerade auch nur nicht folgen ?

gruss Byte09

Torsten_MG

#156
Ok, jetzt ist mir ein Licht aufgegangen  ::) Nicht nur sprichwörtlich.

Habe es jetzt so umgesetzt und hinbekommen:

Trigger device: GLOBAL
Trigger Device Global Whitelist Flur_Taster2_01,Flur_Taster2_02

Bei triggerdetails habe ich von Hand Flur_Taster2_01:trigger:Short* und Flur_Taster2_02:trigger:Short* hinzugefügt und für on und off ausgewählt.

FUNKTIONIERT!!

TOP TOOL!!


EDIT:

Bin jetzt nurnoch gespannt ob du das auch hinbekommst

Zitat von: Byte09 am 26 Mai 2018, 06:29:41
...
geht in dieser version leider nicht so einfach , müsste dann über freecmd gemacht werden. Ich werde für die nächste version( noch am WE ) eine jkleine änderung machen , sa dass er in den conditions eine solche syntax erkennt :

[[dummy1:state]-[dummy2:state]]

gruss Byte

Das wäre echt super! Aber keine Kektik ;)


EDIT2:

Zitat von: Torsten_MG am 25 Mai 2018, 15:49:18
...
Eine Zusatzfrage:

Der Aktor ist ein Dimmer, wie bekomme ich es hin, dass das Licht bei Schalten über motion z.B. nur mit 30% angeht?

Momentan habe ich bei device action: MSwitch on cmd: Set on-for-timer 30 stehen

Darauf bist du bisher garnicht eingegangen, dann gehe ich mal davon aus, dass dafür keine Möglichkeit gibt. Es ist nämlich so, dass ich gerne das Licht gedimmt für 30sek. eingeschaltet haben möchte, wenn der Bewegungsmelder abends/nachts schaltet

Byte09

Zitat von: Torsten_MG am 26 Mai 2018, 14:32:08

Bin jetzt nurnoch gespannt ob du das auch hinbekommst

Das wäre echt super! Aber keine Kektik ;)

.
.
.. Es ist nämlich so, dass ich gerne das Licht gedimmt für 30sek. eingeschaltet haben möchte, wenn der Bewegungsmelder abends/nachts schaltet

ich habe es schon hinbekommen, läuft bei mir und ist in der kommenden version vorhanden.  ;)

zum zweiten punkt schreibe ich dir nachher was, bin jetzt erstmal kindertaxi. geht aber auch

gruss Byte09

Torsten_MG

Hat keine Eile!!

Sitze auch im Garten, genieße die Sonne und spiele etwas nebenbei mit Fhem  ;D . Gleich kommen noch Gäste, dann wird lecker gegrillt  8)

Byte09

Zitat von: Byte09 am 26 Mai 2018, 14:47:44
ich habe es schon hinbekommen, läuft bei mir und ist in der kommenden version vorhanden.  ;)

zum zweiten punkt schreibe ich dir nachher was, bin jetzt erstmal kindertaxi. geht aber auch

gruss Byte09

im grunde musst du hier 2 befehle ausführen lassen , beide im on- zweig , da der dimmer es nicht unterstützt ( on for timer und einen pct wert gleichzeitig zu setzen zu setzen  - glaube ich .

anbei einfach ein bild mit der config.

gruss thomas

Byte09

#160
das kommende Update auf V1.5 wird folgende Änderungen/Neuerungen beinhalten.

der Code wurde vollkommen überarbeitet, diverse Routinen von Grund auf neu geschrieben.

neue Attribute:

MSwitch_Condition_Time (0,1)
- bewirkt die überprüfung der 'Trigger condition' auch für zeitgesteuertes Schalten . 0 entspricht dem bisherigen Verhalten

MSwitch_RandomTime (00:00:01-00:00:10)
- bewirkt die berechnung einer Zufallszeit zwischen 1 und 10 Sekunden vor JEDER Ausführung von Delays. Auf diese kann durch Angabe von '[random]' im Delayfeld zugegriffen werden. Delays werden entsprechend zufällig mit einer Verzögerung zwischen 0 und 10 Sekunden ausgeführt (je nach belegung des Attributes). Leeres oder nicht vorhandenes Attibut entspricht dem bisherigem verhalten.

MSwitch_RandomNumber ( 0 - 100)
- bewirkt die Berechnung einer Zufallszahl  in angegebenem Rahmen vor JEDER Befehlsausführung . Auf diese kann in den 'conditions' zugegriffen werden , und es besteht so die Möglichkeit einen Befehl nur mit einer bestimmten Wahrscheinlichkeit ausführen zu lassen (weitere Erklärung folgt). Leeres oder nicht vorhandenes Attibut entspricht dem bisherigem verhalten.

MSwitch_Conditions (ggf. erst ab V1.51)
- bietet die Möglichkeit , häufig genutzte Conditions in einer Liste zu hinterlegen, um diese in den Conditions Feldern über ein Kürzel aufzurufen, genaue Syntax folgt.

neue (zusätzliche) Syntax in den Schaltzeiten:

[?20:00-21:00|1]
der Schaltzeitpunkt wird zufällig gewählt , in diesem Fall Montags zwischen 20:00 Uhr und 21:00 Uhr

[00:10*20:00-21:00]
der Schaltbefehl wird zwischen 20 Uhr und 21 Uhr alle 10 Minuten ausgeführt


neu in Conditions

in den conditions ( in diesem Falll für angegebene Schaltzeiten ) kann jetzt auf 'fremde' Readings zugegriffen werden.
folgende Syntax z.B bewirkt , das der Befehl nur in Zeitraum ausgeführt wird, der in den states entsprechender Dummys etc. hinterlegt ist. Dabei muss das Format in folgender Form vorliegen HH:MM.
Syntax [[dummy1:state]-[dummy2:state]]

diverse Fehler behoben

eine Kombination dieser neuen Optionen ergiebt die komfortable Möglichkeit einer Anwesenheitssimulation in einem MSwitch-Device für alle beteiligten Geräte.

gruss Byte09


Torsten_MG

Ich bin begeistert  ;D

Dein Modul ist super, pass nur auf, daß es nicht zur Eierlegendenwollmilchsau wird, dann wird es zu unübersichtlich!

Durch dein Modul ist es bei mir jetzt etwas übersichtlicher geworden.

Um nochmal auf gestern mit den Dummsy zurück zu kommen. Da du geschrieben hattest:
Zitat...configfile MSwitch ( die dummys müssen erst angelegt werden )...

Habe ich gedacht, ich brauche die!

Aber es läuft jetzt perfekt!

Byte09

#162
Zitat von: Torsten_MG am 27 Mai 2018, 08:47:57
Ich bin begeistert  ;D

Dein Modul ist super, pass nur auf, daß es nicht zur Eierlegendenwollmilchsau wird, dann wird es zu unübersichtlich!

Durch dein Modul ist es bei mir jetzt etwas übersichtlicher geworden.

Um nochmal auf gestern mit den Dummsy zurück zu kommen. Da du geschrieben hattest:
Habe ich gedacht, ich brauche die!

Aber es läuft jetzt perfekt!


nein , brauchst du nicht. damit konntest du die funktion nur am besten nachvollziehen . das
Zitat...configfile MSwitch ( die dummys müssen erst angelegt werden )...
war nur darauf bezogen , das sich das configfile nicht einspielen lässt , wenn die dummys nicht da sind, da sich alles auf diese dummys bezieht.

zur wollmilchsau :

es ist in der Tat so , dass  es eine solche werden muss ( fast ist ), da ich z.B nichts anderes mehr nutze , kein notify,kein watchdog, kein at, kein doif etc. pp . in meinem system gibt es ausschliesslich MSwitch , da ich alle Automatisierungen übersichtlich - auf einer Seite - einsehen können will , und das ist nunmal bisher nur im MSwitch - Inforoom gegeben (Anhang).
Sozusagen ein Alleinstellungsmerkmal  ;)

Insofern muss/soll es alles können. Aber da det. ja schon ähnliche bedenken geäussert hat bleibt die Grundfunktion und Konfiguration so , wie sie jetzt ist . Alles weiter sind/werden Funktionen , die entweder komplett im Hintergrund laufen , oder die Zuschalbar sind , nach Bedarf, und somit nicht auffallen , wenn sie nicht aktiviert werden.

gruss thomas

andies

Hmm. Da brauchen wir so was wie eine richtige Einführung über mehrere Seiten, damit das möglichst viele verstehen. Eine Einleitung von Grund auf, meine ich. Das ist Arbeit ✍️


Gesendet von iPad mit Tapatalk Pro
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 27 Mai 2018, 09:22:56
Hmm. Da brauchen wir so was wie eine richtige Einführung über mehrere Seiten, damit das möglichst viele verstehen. Eine Einleitung von Grund auf, meine ich. Das ist Arbeit ✍️


Gesendet von iPad mit Tapatalk Pro

das ist es in jedem Fall  :o .....und ich sträube mich sowas von .. dagegen  ;) ;) ;)

gruss Thomas