98_MSwitch - Support

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

Vorheriges Thema - Nächstes Thema

Byte09

#255
Zitat von: andies am 16 Juni 2018, 18:11:47
Ich habe das jetzt ein wenig anders definiert, kannst Du mal drüberschauen:

#V V1.54
#S .Device_Affected -> FreeCmd-AbsCmd1
#S .Device_Affected_Details -> FreeCmd-AbsCmd1,cmd,cmd,set TelegramBot _msg Schlafzimmerfenster offen[S]{DebianMail("mail@adresse.com"##"Fenster offen!"##"der Roman"##"/opt/fhem/www/snapshots/SchlafzimmerFensterOffen.jpg")},,delay1,delay1,001200,000000,,,600,720
#S .Device_Events -> Schlafzimmerfenster:state:open|no_trigger
#S .First_init -> done
#S .Trigger_Whitelist -> Schlafzimmerfenster
#S .Trigger_cmd_off -> no_trigger
#S .Trigger_cmd_on -> Schlafzimmerfenster:state:open
#S .Trigger_condition -> [BresserTemeo_1.temperature]~<~12
#S .Trigger_off -> no_trigger
#S .Trigger_on -> no_trigger
#S .Trigger_time ->
#S .V_Check -> V 0.3
#S Trigger_device -> all_events
#S Trigger_log -> on
#S last_event -> state:Hum:37.20Tem:27.20
#S state -> active
#A verbose -> 1
#A MSwitch_Lock_Quickedit -> 1
#A MSwitch_Ignore_Types -> notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
#A MSwitch_Inforoom -> MSwitch
#A MSwitch_Mode -> Notify
#A MSwitch_Include_Webcmds -> 1
#A MSwitch_Expert -> 1
#A MSwitch_Include_Devicecmds -> 1
#A MSwitch_Extensions -> 0
#A MSwitch_Safemode -> 1
#A room -> MSwitchtest
#A MSwitch_Include_MSwitchcmds -> 0
#A MSwitch_Delete_Delays -> 1
#A MSwitch_Help -> 1
#A MSwitch_Debug -> 0

Ich lasse nur auf offenes Fenster triggern und löse dann aus, wenn die Außentemperatur unter 12 Grad ist. Und "Repeats" ist was genau? Also was ist der Unterschied zu Repeatdelay? Oder ist das Anzahl der Repeats - was wäre dann unendlich?

Letzte Frage: Ich wollte bei Auslösung noch die Heizung runterdrehen, das füge ich einfach hinzu. Das könnte ich doch so machen, dass bei Fenster-zu die Heizung wieder hochfährt, oder?

das geht so in die hosen.
zum ersten wird nur geprüft , wenn du das fenster öffnest und es unter 12 grad ist . wenn es zu diesem zeitpunkt wärmer ist , findet keine weitere prüfung mehr statt, selbst wenn das wasser gerfiert.  ;D

und mit den reppeats hast du dir eine gemeine schleife eingebaut , die nichtmal durch den safemode erkannt wird . die wirst du nur durch einen Fhemneustart unterprechen können, wenn einmal ausgelöst . Ansonsten bekommst du 600 mal die mitteilung über bot, alle 720 sekunden

wenn du lust hast , gib mir doch mal per pm deine telenummer, dann rufe ich dich mal an - ist einfacher.

gruss Byte09

andies

#256
Ich glaube, ich habe es kapiert. Repeats ist unabhängig von der Condition. Und wenn ich ehrlich bin: Da reicht eine Nachricht, meine Frau wird sonst im Dreieck springen. Also mache ich das so:

#V V1.54
#S .Device_Affected -> FreeCmd-AbsCmd1
#S .Device_Affected_Details -> FreeCmd-AbsCmd1,cmd,cmd,{fhem("set TelegramBot _msg Schlafzimmerfenster offen")[S]DebianMail("ich@mail.de"##"Fenster offen!"##"Der Roman"##"/opt/fhem/www/snapshots/SchlafzimmerFensterOffen.jpg")},,delay1,delay1,001200,000000,,,0,0
#S .Device_Events -> SchlafzimmerfensterMail:state:active|Schlafzimmerfenster:state:set_reset|Schlafzimmerfenster:state:closed|Schlafzimmerfenster:Activity:alive|Schlafzimmerfenster:state:open|Flic:state:connected|ActionDetector:state:alive:1 dead:0 unkn:0 off:0|Mosquitto:connection:connecting|VCCU:state:WLAN_HmUART:disconnected,|Schlafzimmerfenster:contact:closed (to broadcast)|Schlafzimmerfenster:trigger_cnt:64|Schlafzimmerthermostat:Activity:alive|Flic:state:disconnected|Schlafzimmerfenster:NACK|Schlafzimmerfenster:battery:ok|no_trigger|ActionDetector:state:alive:2 dead:0 unkn:0 off:0|Schlafzimmerfenster:sabotageError:off|Schlafzimmerfenster:state:Nack|Schlafzimmerfenster:alive:yes|Schlafzimmerfenster:trigger_cnt:63|Schlafzimmerfenster:trigDst_broadcast:noConfig|Schlafzimmerfenster:trigger_cnt:62|Schlafzimmerfenster:contact:open (to broadcast)
#S .First_init -> done
#S .Trigger_Whitelist -> Schlafzimmerfenster
#S .Trigger_cmd_off -> no_trigger
#S .Trigger_cmd_on -> Schlafzimmerfenster:state:open
#S .Trigger_condition -> ([Schlafzimmerfenster.state]~eq~"open")~AND~([BresserTemeo_1.temperature]<12)
#S .Trigger_off -> no_trigger
#S .Trigger_on -> no_trigger
#S .Trigger_time ->
#S .V_Check -> V 0.3
#S Trigger_device -> all_events
#S Trigger_log -> on
#S last_event -> trigger_cnt:64
#S state -> active
#A MSwitch_Include_Devicecmds -> 1
#A MSwitch_Lock_Quickedit -> 1
#A room -> hidden
#A MSwitch_Include_Webcmds -> 1
#A MSwitch_Mode -> Notify
#A MSwitch_Help -> 1
#A MSwitch_Ignore_Types -> notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
#A MSwitch_Inforoom -> MSwitch
#A MSwitch_Extensions -> 0
#A MSwitch_Include_MSwitchcmds -> 0
#A MSwitch_Safemode -> 1
#A MSwitch_Debug -> 0
#A MSwitch_Delete_Delays -> 1
#A MSwitch_Expert -> 1
#A verbose -> 1
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

#257
Zitat von: andies am 16 Juni 2018, 21:30:24
Ich glaube, ich habe es kapiert. Repeats ist unabhängig von der Condition. Und wenn ich ehrlich bin: Da reicht eine Nachricht, meine Frau wird sonst im Dreieck springen. Also mache ich das so:

#V V1.54
#S .Device_Affected -> FreeCmd-AbsCmd1
#S .Device_Affected_Details -> FreeCmd-AbsCmd1,cmd,cmd,{fhem("set TelegramBot _msg Schlafzimmerfenster offen")[S]DebianMail("ich@mail.de"##"Fenster offen!"##"Der Roman"##"/opt/fhem/www/snapshots/SchlafzimmerFensterOffen.jpg")},,delay1,delay1,001200,000000,,,0,0
#S .Device_Events -> SchlafzimmerfensterMail:state:active|Schlafzimmerfenster:state:set_reset|Schlafzimmerfenster:state:closed|Schlafzimmerfenster:Activity:alive|Schlafzimmerfenster:state:open|Flic:state:connected|ActionDetector:state:alive:1 dead:0 unkn:0 off:0|Mosquitto:connection:connecting|VCCU:state:WLAN_HmUART:disconnected,|Schlafzimmerfenster:contact:closed (to broadcast)|Schlafzimmerfenster:trigger_cnt:64|Schlafzimmerthermostat:Activity:alive|Flic:state:disconnected|Schlafzimmerfenster:NACK|Schlafzimmerfenster:battery:ok|no_trigger|ActionDetector:state:alive:2 dead:0 unkn:0 off:0|Schlafzimmerfenster:sabotageError:off|Schlafzimmerfenster:state:Nack|Schlafzimmerfenster:alive:yes|Schlafzimmerfenster:trigger_cnt:63|Schlafzimmerfenster:trigDst_broadcast:noConfig|Schlafzimmerfenster:trigger_cnt:62|Schlafzimmerfenster:contact:open (to broadcast)
#S .First_init -> done
#S .Trigger_Whitelist -> Schlafzimmerfenster
#S .Trigger_cmd_off -> no_trigger
#S .Trigger_cmd_on -> Schlafzimmerfenster:state:open
#S .Trigger_condition -> ([Schlafzimmerfenster.state]~eq~"open")~AND~([BresserTemeo_1.temperature]<12)
#S .Trigger_off -> no_trigger
#S .Trigger_on -> no_trigger
#S .Trigger_time ->
#S .V_Check -> V 0.3
#S Trigger_device -> all_events
#S Trigger_log -> on
#S last_event -> trigger_cnt:64
#S state -> active
#A MSwitch_Include_Devicecmds -> 1
#A MSwitch_Lock_Quickedit -> 1
#A room -> hidden
#A MSwitch_Include_Webcmds -> 1
#A MSwitch_Mode -> Notify
#A MSwitch_Help -> 1
#A MSwitch_Ignore_Types -> notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
#A MSwitch_Inforoom -> MSwitch
#A MSwitch_Extensions -> 0
#A MSwitch_Include_MSwitchcmds -> 0
#A MSwitch_Safemode -> 1
#A MSwitch_Debug -> 0
#A MSwitch_Delete_Delays -> 1
#A MSwitch_Expert -> 1
#A verbose -> 1


zumindest ist kein grundsätzlicher fehler drinnen, aber:

er löst die message nur einmal aus , in dem moment , wenn du das fenster öffnest , weil nur dann das even t'state:open' eintritt. ist in diesem moment die temperatur < 12 grad, bekommst du 12 minuten später ( delay 12 )  die nachricht, wenn dann das Fenster noch auf ist und die temp immer noch < 12 grad ist ( delay with cond-check ).

wenn das Fenster offen ist , und die temperatur dann fällt ( unter 12 Grad ) wird kein Event getriggert und du wirst nicht benachrichtigt.

grundsätzlich: wenn nur auf ein device getriggert wird, sollte das device direkt angewählt werden , und nicht über GLOBAL und dann per Whitelist gefiltert , da das Triggern auf GLOBAL deutlich systemlastiger ist .

den telegram_bot musst du nicht über freecmd ansprechen ( geht aber auch ) , er sollte in der liste der 'affected devices' direkt verfügbar sein ?!

Ich melde mich nachher bei dir.

gruss Byte09

andies

Die Temperatur, die ich messe, ist die Außentemperatur - das habe ich nicht klar genug gesagt.

Liegt aber auch daran, weil ich gar nicht wüsste, wie ich dass mit der Innentemperatur machen könnte  ;)
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 17 Juni 2018, 08:44:07
Die Temperatur, die ich messe, ist die Außentemperatur - das habe ich nicht klar genug gesagt.

Liegt aber auch daran, weil ich gar nicht wüsste, wie ich dass mit der Innentemperatur machen könnte  ;)

Ah ...ok, ich ging die ganze zeit von der innentemperatur aus. Wäre aber trotzdem besser, wenn du die benachrichtigung auch dann erhäst, wenn die aussentemperatur fällt , und das Fenster bereits offen ist.
ist ja nur eine kleinigkeit, nimm einfach den temperaturfühler wieder mit als trigger auf , den rest kannst du dann ja so lassen.

gruss Byte09

Torsten_MG

#260
Bin bis jetzt super begeistert mit dem Modul, Super gemacht!!!

Jetzt habe ich noch eine Sache die gerne damit machen möchte weiß aber nicht ob das geht, und wenn ja, wie ich es umsetze.

Hier mein bisheriger aufbau:

Ich habe 3 at´s die wie folgt aufgebaut sind:

Frühschicht
*13:55:00 {if ((ReadingsVal("vKalender_Schicht","t_001_summary","") eq "Frühschicht") && (ReadingsVal("vKalender_Schicht","c-today","") eq "1")) {Fahrtstrecke()}}

Spätschicht
*21:55:00 {if ((ReadingsVal("vKalender_Schicht","t_001_summary","") eq "Spätschicht") && (ReadingsVal("vKalender_Schicht","c-today","") eq "1")) {Fahrtstrecke()}}

Nachtschicht
*05:55:00 {if ((ReadingsVal("vKalender_Schicht","t_001_summary","") eq "Nachtschicht") && (ReadingsVal("vKalender_Schicht","c-today","") eq "1")) {Fahrtstrecke()}}

{Fahrtstrecke()}
sub
Fahrtstrecke()
{
my @Strecke1 = "";
my @Strecke1a = "";
my @Strecke1b = "";
my @Strecke2 = "";
my @Strecke2a ="";
my @Strecke2b ="";

@Strecke1 =  ReadingsVal("Fahrtzeit_Arbeit","duration_in_traffic","");
@Strecke2 =  ReadingsVal("Arbeit_ohne_Autobahn","duration_in_traffic","");
@Strecke1a = split(/ /,@Strecke1);
@Strecke2a = split(/ /,@Strecke2);

if (@Strecke2a[0]<@Strecke1a[0])
{
fhem("set teleBot send Alternative Strecke @Strecke2")}
else
{
fhem("set teleBot send Standard Strecke @Strecke1")}
}


Damit sende ich mir zum feierabend per Telegramm, welche Strecke die schnellere ist.

Funktioniert so, aber ich würde gerne mein System etwas aufräumen.

Byte09

Kurz da Handy. ..

Die 3 at kannst du in jedem Fall in ein mswitch packen . ... im Grunde mit gleichem Inhalt ( mswitch Syntax halt )..


Theoretisch kannst du auch die ganze sub in das gleiche mswitch in ein freecmd packen ... muss ich aber selber probieren ob er das frisst .

Melde mich , wenn ich Zuhause bin .

Gruss Byte09

Gesendet von meinem SM-G900F mit Tapatalk


Byte09

@Torsten_MG

ich habe dir jetzt nur mal schnell die 3 at in ein MSwitch zusammengefasst. Ich hoffe , dass die devicenamen alle stimmen. Das ganze habe ich nicht getestet , hätte sonst nen haufen dummys anlegen müssen. probier einfach mal ob es geht . im zweiten schritt könnte man die gasamte sub dann mit in das device übernehmen.

gruss Byte09


Zitat#V V1.61
#S .Device_Affected -> FreeCmd-AbsCmd1
#S .Device_Affected_Details -> FreeCmd-AbsCmd1,cmd,cmd,{Fahrtstrecke()},,delay1,delay1,000000,000000,([13.50-13.59]~AND~[vKalender_Schicht.t_001_summary]~eq~"Frühschicht")~OR~([21.50-21.59]~AND~[vKalender_Schicht.t_001_summary]~eq~"Spätschicht")~OR~([05.50-05.59]~AND~[vKalender_Schicht.t_001_summary]~eq~"Nachtschicht"),,0,0
#S .Device_Events -> no_trigger|state:on|state:off
#S .First_init -> done
#S .Trigger_Whitelist -> undef
#S .Trigger_cmd_off -> state:off
#S .Trigger_cmd_on -> state:on
#S .Trigger_condition -> [vKalender_Schicht.c-today"]~eq~"1"
#S .Trigger_off -> no_trigger
#S .Trigger_on -> no_trigger
#S .Trigger_time -> on~off~ononly[13:55][21:55][05:55]~offonly
#S .V_Check -> V 0.3
#S Trigger_device -> no_trigger
#S Trigger_log -> off
#S last_event -> state:off
#S state -> active
#A MSwitch_Include_Webcmds -> 0
#A MSwitch_Delete_Delays -> 1
#A room -> Test
#A MSwitch_Include_MSwitchcmds -> 0
#A MSwitch_Help -> 0
#A MSwitch_Mode -> Notify
#A MSwitch_Extensions -> 0
#A MSwitch_Lock_Quickedit -> 1
#A MSwitch_Ignore_Types -> notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
#A MSwitch_Condition_Time -> 1
#A MSwitch_Include_Devicecmds -> 1
#A MSwitch_Safemode -> 1
#A MSwitch_Expert -> 0
#A MSwitch_Debug -> 0

Torsten_MG

#263
Danke erstmal, bin gespannt ob´s funktioniert. Werde es morgen früh sehen, da ich gleich Nachtschicht habe.

Verstehe ich das mit dem Trigger device richtig, dass immer zu den Zeiten im execute cmd die Trigger condition abgefragt wird und wenn diese übereinstimmt, dann wird der device action ausgelöst

Torsten_MG

#264
Da ist aber ein Fehler drin, siehe Foto. Da ist ein " zu viel

Byte09

Zitat von: Torsten_MG am 24 Juni 2018, 18:41:03
Danke erstmal, bin gespannt ob´s funktioniert. Werde es morgen früh sehen, da ich gleich Nachtschicht habe.

Verstehe ich das mit dem Trigger device richtig, dass immer zu den Zeiten im execute cmd die Trigger condition abgefragt wird und wenn diese übereinstimmt, dann wird der device action ausgelöst

ja,

zu den 3 betreffenden zeiten
Zitat[13:55][21:55][05:55]
wird der cmdzweig 1 ausgelöst , aber nur dann, wenn [vKalender_Schicht:c-today] eq "1"

in der condition wird dann geprüft, ob, und welcher zeitraum/reading Kombination passt :
Zitat([13:50-13:59] AND [vKalender_Schicht:t_001_summary] eq "Frühschicht") OR ...

passt der auslüsende zeitpunkt zu einer der 3 kombinationen , wird der befehl
Zitat{Fahrtstrecke()}
ausgeführt.

aber wie gesagt, ich habe es selber nicht getestet und mit dem Fehler hast du natürlich recht , ist "copy and paste" geschuldet   ;)

gruss Byte09

Byte09

#266
Zitat von: Torsten_MG am 24 Juni 2018, 18:41:03
Danke erstmal, bin gespannt ob´s funktioniert. Werde es morgen früh sehen, da ich gleich Nachtschicht habe.

Verstehe ich das mit dem Trigger device richtig, dass immer zu den Zeiten im execute cmd die Trigger condition abgefragt wird und wenn diese übereinstimmt, dann wird der device action ausgelöst

falls es bis hierhin funktioniert - etwas erweitert:

manuelle anfrage über telebot möglich , mit der Anfrage "Weg" über telegram.
schickt dir den besten weg , falls du mal abweichend der vorgegebenen zeiten fährst.

kurz langeweile gehabt  ;)
gruss Byte09

#V V1.6
#S .Device_Affected -> FreeCmd-AbsCmd1
#S .Device_Affected_Details -> FreeCmd-AbsCmd1,cmd,cmd,{Fahrtstrecke()},{Fahrtstrecke()},delay1,delay1,000000,000000,([13.50-13.59]~AND~[vKalender_Schicht.t_001_summary]~eq~"Frühschicht")~OR~([21.50-21.59]~AND~[vKalender_Schicht.t_001_summary]~eq~"Spätschicht")~OR~([05.50-05.59]),,0,0
#S .Device_Events -> msgText:Weg|no_trigger
#S .First_init -> done
#S .Trigger_Whitelist -> undef
#S .Trigger_cmd_off -> msgText:Weg
#S .Trigger_cmd_on -> no_trigger
#S .Trigger_condition -> [vKalender_Schicht.c-today]~eq~"1"
#S .Trigger_off -> no_trigger
#S .Trigger_on -> no_trigger
#S .Trigger_time -> on~off~ononly[13:55][21:55][05:55][[05:58]]~offonly
#S .V_Check -> V 0.3
#S Trigger_device -> teleBot
#S Trigger_log -> off
#S last_event -> state:off
#S state -> active
#A MSwitch_Debug -> 0
#A MSwitch_Lock_Quickedit -> 1
#A MSwitch_Mode -> Notify
#A MSwitch_Help -> 1
#A MSwitch_Expert -> 0
#A MSwitch_Condition_Time -> 1
#A MSwitch_Safemode -> 1
#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_Extensions -> 0
#A MSwitch_Include_MSwitchcmds -> 0
#A MSwitch_Delete_Delays -> 1
#A MSwitch_Include_Webcmds -> 0

Torsten_MG

Guten Morgen, sieht erstmal gut aus. Um 5:55Uhr kam die Nachricht per Telegramm. Den Zusatz schau ihr mir heute Nachmittag an, gehe jetzt erstmal schlafen.

Gesendet von meinem SM-J730F mit Tapatalk


Torsten_MG

Zitat von: Byte09 am 25 Juni 2018, 06:13:08
falls es bis hierhin funktioniert - etwas erweitert:

manuelle anfrage über telebot möglich , mit der Anfrage "Weg" über telegram.
schickt dir den besten weg , falls du mal abweichend der vorgegebenen zeiten fährst.

kurz langeweile gehabt  ;)
gruss Byte09

Funktioniert soweit, nur bekomme ich den Text 3x zugeschickt. Kann aber auch mit dem anderen Code zusammenhängen.

Byte09

Zitat von: Torsten_MG am 25 Juni 2018, 16:26:08
Funktioniert soweit, nur bekomme ich den Text 3x zugeschickt. Kann aber auch mit dem anderen Code zusammenhängen.

immer, also auch bei zeitauslösung, oder wenn du ihn 'abrufst' ?

gruss Byte09