[gelöst] Schichtwechsel: at oder doif oder ganz anders?

Begonnen von Salvi5, 17 Oktober 2018, 18:17:17

Vorheriges Thema - Nächstes Thema

Salvi5

Hallo,
ich habe mit dem weekprofile-Modul Heizungspläne für den chaotischen Schichtbetrieb meiner Frau eingerichtet, also quasi für jede Schicht einen. Dieser berücksichtigt auch meine -regelmäßige- Anwesenheit im Haus und ich schreibe die Pläne bisher immer wenn ihre Schicht wechselt per händischem set.... in die Thermostate. Dies möchte ich nun automatisieren. Dazu lese ich per GCALVIEW ihren ordentlich geführten Schichtplan aus und könnte nun immer wenn die Schicht wechselt den richtigen Plan in die HTs schreiben. Dazu habe ich aber mehrere Fragen:

1. Wenn ich das per DOIF realisiere, wird dann das doif jedes mal ausgeführt, wenn der Kalender sich aktualisiert, oder nur wenn sich der Eintrag im reading des Kalenders ändert?
2. Da mir das Schreiben der Heizpläne die credits aufbraucht, würde ich das gerne Nachts machen, wenn der Heizplan sich eh grade nicht ändert, wie kann ich also einem doif sagen, dass es quasi nur um 1:00 Uhr ausgeführt werden soll?
3. Ist diese Vorstellung völlig Hirnrissig, und ihr würdet das viel einfacher lösen?

Gruß Mike

Salvi5

So, des Monologs 2ter Teil,

ich habe jetzt ein DOIF eingerichtet, und ein dummy namens LastShift. Im DEF-Teil des DOIFs steht jetzt exakt Folgendes:
([23:57] and
[SchichtenCal:tomorrow_001_summary] eq "Spätschicht" or
[SchichtenCal:tomorrow_001_summary] eq "Frei" or
[SchichtenCal:tomorrow_001_summary] eq "Urlaub" or
[SchichtenCal:tomorrow_001_summary] eq "Krank" and
[LastShift] eq "Nachtschicht" or
[LastShift] eq "Frühschicht")
(set HZG_WP_BAD send_to_device Frei_und_SS MAX_1a7172)
(set HZG_WP_Normal send_to_device Frei_und_SS MAX_186a26)
(set HZG_WP_Normal send_to_device Frei_und_SS MAX_19b48b)
(set HZG_WP_Normal send_to_device Frei_und_SS MAX_1a711e)
(set HZG_WP_Normal send_to_device Frei_und_SS MAX_1a70ef)
(set HZG_WP_SZ send_to_device Frei_und_SS MAX_1a70bd)
(set LastShift [SchichtenCal:tomorrow_001_summary])
DOELSEIF
([23:57] and
[SchichtenCal:tomorrow_001_summary] eq "Frühschicht" and
[LastShift] ne "Frühschicht")
(set HZG_WP_BAD send_to_device FS MAX_1a7172)
(set HZG_WP_Normal send_to_device FS MAX_186a26)
(set HZG_WP_Normal send_to_device FS MAX_19b48b)
(set HZG_WP_Normal send_to_device FS MAX_1a711e)
(set HZG_WP_Normal send_to_device FS MAX_1a70ef)
(set HZG_WP_SZ send_to_device FS MAX_1a70bd)
(set LastShift [SchichtenCal:tomorrow_001_summary])
DOELSEIF
([23:57] and
[SchichtenCal:tomorrow_001_summary] eq "Nachtschicht" and
[LastShift] ne "Nachtschicht")
(set HZG_WP_BAD send_to_device NS MAX_1a7172)
(set HZG_WP_Normal send_to_device NS MAX_186a26)
(set HZG_WP_Normal send_to_device NS MAX_19b48b)
(set HZG_WP_Normal send_to_device NS MAX_1a711e)
(set HZG_WP_Normal send_to_device NS MAX_1a70ef)
(set HZG_WP_SZ send_to_device NS MAX_1a70bd)
(set LastShift [SchichtenCal:tomorrow_001_summary])


Kann da mal bitte jemand drüberschauen, ob das funktionieren würde, bevor ich wieder stundenlang auf Credits warte?
...oder ob man das noch irgendwie einfacher strukturieren kann...

Gruß Mike

Byte09

sorry für OT und möglicherweise eine doofe frage, aber was bitte sind 'credits' auf die man in genanntem zusammenhang warten muss ?


gruss Byte09

Salvi5

Dein Ernst??? Du stehst hier als Senior Member  :o ....
Wenn ich die Wochenpläne an die Heizkörperthermostate sende, verbrauche ich von dem durch die 1%-Regel limitierten Funkverkehr mehr, als mir dafür zusteht. Von diesen "credits" (so wird das jedenfalls hier im Forum und in einschlägigen Hilfeseiten genannt) steht mir pro Stunde eine Menge X zu, und wenn sie aufgebraucht sind, wartet die Übertragung, bis wieder welche verfügbar sind. Und das kann im Falle von dieser Menge an Wochenplänen und HTs schonmal 2 Stunden dauern.

Gruß Mike

Byte09

Zitat von: Salvi5 am 20 Oktober 2018, 11:11:06
Dein Ernst??? Du stehst hier als Senior Member  :o ....
Wenn ich die Wochenpläne an die Heizkörperthermostate sende, verbrauche ich von dem durch die 1%-Regel limitierten Funkverkehr mehr, als mir dafür zusteht. Von diesen "credits" (so wird das jedenfalls hier im Forum und in einschlägigen Hilfeseiten genannt) steht mir pro Stunde eine Menge X zu, und wenn sie aufgebraucht sind, wartet die Übertragung, bis wieder welche verfügbar sind. Und das kann im Falle von dieser Menge an Wochenplänen und HTs schonmal 2 Stunden dauern.

Gruß Mike

ahh, ok - bitte meine Unwissenheit zu entschuldigen!

Konnte credits in diesem zusammenhang nicht  der 1% regel zuordnen . musste ich mich auch nicht wirklich mit befassen bisher , da ich bei ca 30 homematicgeräten bisher - zumindest nicht spürbar - an diese grenze gekommen bin .
- und falls doch restart gateway und fertig .

gruss Byte09


Salvi5

Zitat von: Byte09 am 20 Oktober 2018, 11:24:04
ahh, ok - bitte meine Unwissenheit zu entschuldigen!
Das war keinesfalls böse gemeint!

Zitat...da ich bei ca 30 homematicgeräten bisher - zumindest nicht spürbar - an diese grenze gekommen bin .

Vermutlich arbeitet Deine Frau nicht im chaotischen Schichtrhytmus.

Gruß Mike

Byte09

Zitat von: Salvi5 am 20 Oktober 2018, 11:30:19
Das war keinesfalls böse gemeint!

Vermutlich arbeitet Deine Frau nicht im chaotischen Schichtrhytmus.

Gruß Mike

alles gut  ;)

nein , vermutlich eher daher , das ich keine Themostate betreibe , die wohl (scheinbar) eine Menge Sendezeit 'kosten' ( kA - mangels erfahrung )

gruss Byte09

Otto123

Hi,

Ich dachte auch immer credits haben was mit Geld zu tun :)

Andere Idee: Wenn das mit dem Funkverkehr so ein Problem ist und sich quasi die Pläne zweimal am Tag ändern - Macht es Sinn dass man damit vielleicht mehr Funkverkehr produziert als wenn man einfach FHEM die Steuerung gibt?

Das Ganze einfach komplett in FHEM abbilden?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Salvi5

Zitat von: Otto123 am 20 Oktober 2018, 13:34:07
Das Ganze einfach komplett in FHEM abbilden?

Das war meine erste Überlegung, aber da zu dem oben geposteten Code noch eine Abwesenheitsschaltung gehört, welche die HTs bei Abwesenheit aller Bewohner auf manuell und 17 Grad stellt, würde das Ganze, glaube ich, noch komplizierter werden. Ich werde mich mal in Perl einlesen müssen. Wenn es da Lösungen gibt, die Matrizen verarbeiten können, vielleicht über arrays oder so, dann kann man das vllt. über ein externes Skript einfacher machen. Aber das dauert ne Weile.

Das DOIF oben soll ja eigtl. verhindern, dass jeden Tag 2x die WP übertragen werden, indem es den Status in ein dummy schreibt und  dann vor Ausführung vergleicht. Ob's funktioniert erfahre ich am Dienstag, da hat die Olle mein geliebtes Eheweib ne andere Schicht.
Ich dachte nur, hier wüsste jemand, wie man das noch ein bisschen komprimieren oder vereinfachen kann...

Gruß Mike

Damian

Zitat von: Salvi5 am 20 Oktober 2018, 15:06:57
Das war meine erste Überlegung, aber da zu dem oben geposteten Code noch eine Abwesenheitsschaltung gehört, welche die HTs bei Abwesenheit aller Bewohner auf manuell und 17 Grad stellt, würde das Ganze, glaube ich, noch komplizierter werden. Ich werde mich mal in Perl einlesen müssen. Wenn es da Lösungen gibt, die Matrizen verarbeiten können, vielleicht über arrays oder so, dann kann man das vllt. über ein externes Skript einfacher machen. Aber das dauert ne Weile.

Das DOIF oben soll ja eigtl. verhindern, dass jeden Tag 2x die WP übertragen werden, indem es den Status in ein dummy schreibt und  dann vor Ausführung vergleicht. Ob's funktioniert erfahre ich am Dienstag, da hat die Olle mein geliebtes Eheweib ne andere Schicht.
Ich dachte nur, hier wüsste jemand, wie man das noch ein bisschen komprimieren oder vereinfachen kann...

Gruß Mike

Ich habe meine HM-Wandthermostate mit den jeweiligen Aktoren gepeert und gebe per Tagesprogramm im DOIF die Vorgabetemperatur vor. Das funktioniert recht zuverlässig und braucht kaum Credits.

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Salvi5

#10
([23:57] and
([?SchichtenCal:tomorrow_001_summary] eq "Spätschicht" or
[?SchichtenCal:tomorrow_001_summary] eq "Frei" or
[?SchichtenCal:tomorrow_001_summary] eq "Urlaub" or
[?SchichtenCal:tomorrow_001_summary] eq "Krank") and
([?LastShift] eq "Nachtschicht" or
[?LastShift] eq "Frühschicht"))
(set HZG_WP_BAD send_to_device Frei_und_SS MAX_1a7172)
(set HZG_WP_Normal send_to_device Frei_und_SS MAX_186a26)
(set HZG_WP_Normal send_to_device Frei_und_SS MAX_19b48b)
(set HZG_WP_Normal send_to_device Frei_und_SS MAX_1a711e)
(set HZG_WP_Normal send_to_device Frei_und_SS MAX_1a70ef)
(set HZG_WP_SZ send_to_device Frei_und_SS MAX_1a70bd)
(set LastShift [SchichtenCal:tomorrow_001_summary])
(set Telegram message Frei_und_SS wurde geladen)
DOELSEIF
([23:57] and
([?SchichtenCal:tomorrow_001_summary] eq "Frühschicht" and
[?LastShift] ne "Frühschicht"))
(set HZG_WP_BAD send_to_device FS MAX_1a7172)
(set HZG_WP_Normal send_to_device FS MAX_186a26)
(set HZG_WP_Normal send_to_device FS MAX_19b48b)
(set HZG_WP_Normal send_to_device FS MAX_1a711e)
(set HZG_WP_Normal send_to_device FS MAX_1a70ef)
(set HZG_WP_SZ send_to_device FS MAX_1a70bd)
(set LastShift [SchichtenCal:tomorrow_001_summary])
(set Telegram message FS wurde geladen)
DOELSEIF
([23:57] and
([?SchichtenCal:tomorrow_001_summary] eq "Nachtschicht" and
[?LastShift] ne "Nachtschicht"))
(set HZG_WP_BAD send_to_device NS MAX_1a7172)
(set HZG_WP_Normal send_to_device NS MAX_186a26)
(set HZG_WP_Normal send_to_device NS MAX_19b48b)
(set HZG_WP_Normal send_to_device NS MAX_1a711e)
(set HZG_WP_Normal send_to_device NS MAX_1a70ef)
(set HZG_WP_SZ send_to_device NS MAX_1a70bd)
(set LastShift [SchichtenCal:tomorrow_001_summary])
(set Telegram message NS wurde geladen)
DOELSEIF
([23:58])
DOELSE
(set Telegram message Es wurde kein neuer Wochenplan geladen)


So, wenn man do_always rausnimmt und dafür als letztes cmd DOELSEIF ([23:58]) einfügt, funktioniert es sogar ohne das einem die credits ausgehen  ;D.
Danke für eure Hinweise

Gruß Mike