[gelöst]DOIF Perl Modus, (plötzlich) nicht mehr nachvollziehbares Verhalten

Begonnen von red81, 20 November 2022, 12:40:09

Vorheriges Thema - Nächstes Thema

red81

Hallo zusammen,
bei mir machen zwei DOIFs plötzlich komische Dinge, da ich leider am System die letzte Zeit viel gemacht habe und nicht genau sagen kann seit wann diese "Fehler" auftreten, kann ich leider den Grund nicht nachvollziehen. Ich stehe gerade irgendwie vor einer Schwarzen Wand und ich weiß nicht wo ich ansetzen soll zu suchen. Vielleicht kann mir jemand mit dem Zaunpfahl auf dem Kopf hauen oder den Wald in meinen Bäumen zeigen?

1.DOIF: Steuerung Hühnerstall. Hier werden Nachts die aktuellen Zeiten für Auf und Zu gesendet + Sonntags die Uhrzeit Synchronisiert. das Funktioniert soweit, zusätzlich soll wenn eine Helligkeit über oder unterschritten wird der Befehl auf oder zu gesendet werden. hier liegt das Problem, heute ging der Stall um 7:20 auf, Helligkeit war erst bei ca. 33. Datenaustausch mit dem Stall erfolgt nur alle 2min, also dauert es bis zu 2min bis der Befehl ausgeführt ist und genauso aktualisiert sich der Helligkeitswert nur alle 2min. dadurch dürfte der Befehl max. 2mal gesendet werden. (Einmal wenn die Bedingung zutrifft, ein zweites mal beim nächsten Datenaustausch da da die Tür noch nicht ganz auf ist) im Log sehe ich ihn aber 6x
2022.11.20 03:30:00 3: MQTT2_DEVICE set Stall set_Clock 2022-11-20 03:29:59
2022.11.20 03:35:00 3: MQTT2_DEVICE set Stall 1_Time_Open 489 #Zeitangaben in Minuten des Tages
2022.11.20 03:40:00 3: MQTT2_DEVICE set Stall 1_Time_Close 1014
2022.11.20 03:45:00 3: MQTT2_DEVICE set Voliere 2_Time_Open 479
2022.11.20 03:50:00 3: MQTT2_DEVICE set Voliere 2_Time_Close 1011
...
2022.11.20 07:19:04 3: MQTT2_DEVICE set Stall on
2022.11.20 07:20:10 3: MQTT2_DEVICE set Stall on
2022.11.20 07:22:25 3: MQTT2_DEVICE set Stall on
2022.11.20 07:24:42 3: MQTT2_DEVICE set Stall on
2022.11.20 07:26:57 3: MQTT2_DEVICE set Stall on
2022.11.20 07:29:12 3: MQTT2_DEVICE set Stall on
2022.11.20 07:31:26 3: MQTT2_DEVICE set Stall on


Der Teil des DOIF(List als Anhang):
BackupAufZu{\
if([?04:30-09:00] and [Stall:Brightness] gt "300"){\
  if([?Stall:state] eq "OFF"){\
    fhem_set"Stall on";;\
  }\
}\
if([?16:00-22:00] and [Stall:Brightness] lt "250"){\
  if([?Stall:state] eq "ON"){\
    fhem_set"Stall off";;\
  }\
}\
}


Das 2. DOIF das Probleme macht übernimmt die Heizungssteuerung, kurz gesagt: wenn es Draußen zu warm ist oder keiner zu Hause, werden die aktuellen Einstellungen in einem Dummy gespeichert und die Temperatur abgesenkt, Ist es wieder kälter bez. jemand zuhause werden die gespeicherten Einstellungen wieder zurück sn die Geräte gesendet.
Dieser Teil funktionierte mal, jetzt klappt die Auswertung der Aussentemperatur nicht mehr und die Heizung bleibt im Standby auch wenn die Temperatur kleiner ist.
(Dieses DOIF ist leider nicht Optimal mit was wo gespeichert wird und etwas unübersichtlich & komplex geworden, dazu erstmal deaktiviert damit Frau nicht im kalten sitzt &ich nen Satz warme Ohren bekomme)

DOIF Teil(list wieder im Anhang):
HeizungGetStandby{\
if([Wetter:temperature] gt "17" and get_Reading("standby") eq "false"){\
  fhem(" setreading di_Heizung standby true");;\
} elsif ([Wetter:temperature] lt "17" and get_Reading("standby") eq "true"){\
  fhem(" setreading di_Heizung standby false");;\
}\
}\
HeizungStandby{\
if([di_Heizung:standby] eq "true" and get_Reading("HZ_Status") eq"normal"){\
  HeizungSave();;\
  HeizungManual(15);;\
}\
if([di_Heizung:standby] eq "false" and get_Reading("HZ_Status") eq"normal"){\
  HeizungRestore();;\
}\
}\


Wenn keiner ne Idee hat kann ich nur noch die Dinger Löschen und neu probieren. oder aber ein altes Backup laden und vieles nochmal machen?
Ich danke euch für Tipps
RPI 4B mit SSD:fhem+MariaDB+Mosquitto+Grafana
RPI 3B+: dembatic+zigbee2mqtt

HMIP, Aquara, Tradfi, Shelly und Eigenbau ESP Sensoren und Aktoren

Damian

Es könnte mit der Außentemperatur zusammen hängen, denn z. B.

2 gt "17" ist wahr ;)


Zahlen immer mit > oder < kleiner vergleichen und nicht mit gt bzw. lt - das ist für Zeichenketten gedacht.

z. B.

[Wetter:temperature] > 17
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

red81

Das wäre schon mal ein Zaunpfahl, danke. Erklärt auch warum es anfangs funktionierte als die Temperatur zwischen 10 und 19 Grad schwankte  :-X Und ist in beiden DOIFs so gemacht
Bin wohl im Kopf noch zu sehr in der Microcontrollerwelt (Wert liegt als Zeichenkette vor, nicht als numerische Variable, also kein <>) :-X

Habs geändertunt erstmal auf gelöst gesetzt , nun nur mal noch schauen warum ich beim Stall so viele Ausführungen hatte
RPI 4B mit SSD:fhem+MariaDB+Mosquitto+Grafana
RPI 3B+: dembatic+zigbee2mqtt

HMIP, Aquara, Tradfi, Shelly und Eigenbau ESP Sensoren und Aktoren