[Gelöst] Nach Neustart / Stromausfall / .. falsche Readings in Devices

Begonnen von Gear, 06 Mai 2023, 11:11:31

Vorheriges Thema - Nächstes Thema

Gear

Hallo zusammen,

mein FHEM merkt sich die letzten Readings nicht.
Im Bild ein Beispiel.

- Blau ist das Setzen auf 0 um 0 Uhr. > Ist gewollt.
- Gelb war der Neustart des Servers nach Update.
- Grün war der Neustart von FHEM nach Update.

Es betrifft alle Devices und wenn man die Readings anschaut, dann sind diese Timestamps der Readings von einem alten Datum.

Das Problem hatte ich damals mit FHEM direkt auf dem RPi 4 und jetzt mit FHEM in Docker auf einem ODroid H3.
An Docker liegt es nicht, FHEM wird beim Stop von Docker ordnungsgemäß heruntergefahren, laut Konsole.

Was braucht Ihr für Informationen?

Vielen Dank
Grüße
Gear
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

RalfRog

Die Readings werden nach einem Neustart ja aus "log/fhem.save" wieder hergestellt.
Schau doch mal im Zeitstempel ob die Datei korrekt geschrieben wenn FHEM gestoppt wird.
Manuell kann man das Schreiben auch auslösen {WriteStatefile()}
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

Gear

Ok, nun scheint FHEM bei einem "Shutdown/Restart" die Readings zu speichern und auch korrekt zu laden.

Bei einem Neustart des Containers passiert dies aber nicht.
Hier sehe ich in der Konsole des Containers die Ausführung des "Shutdown".

Wann werden denn die Readings in die File geschrieben?
Sobald diese gesetzt werden oder nur bei einem "Shutdown/Restart"?
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

betateilchen

Das statefile wird nur automatisch geschrieben, wenn der Befehl "shutdown" ausgeführt wird. Egal, ob mit oder ohne restart.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Gear

Gibt es eine Möglichkeit, das zu umgehen?
Ein "at" alle x Zeit?

Oder eine ganz andere Möglichkeit?

Danke!
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Damian

Ich speichere meine save-Datei im Stundentakt, um einem Datenverlust vorzubeugen.

defmod di_save DOIF {[:00];;fhem"save"}
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

betateilchen

#6
Zitat von: Gear am 06 Mai 2023, 19:31:28Gibt es eine Möglichkeit, das zu umgehen?
Ein "at" alle x Zeit?

Es gibt sogar eine Suchfunktion hier im Forum, mit der man verschiedene Lösungsansätze finden könnte, wenn man sie benutzt.

define at_statefile at +*01:00:00 {WriteStatefile}
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Gear

> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Otto123

Zitat von: Gear am 06 Mai 2023, 17:24:26Bei einem Neustart des Containers passiert dies aber nicht.
Wie ist Dein Container gebaut?
Normalerweise wird beim shutdown des Containers erst ein shutdown an FHEM gesendet, ein Wartemechanismus gebaut der überprüft ob FHEM herunter gefahren ist, erst dann wird der Container beendet.
Offenbar funktioniert oder existiert dieser Mechanismus bei Dir nicht.
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

Gear

Hey Otto,

also wenn ich in der Konsole des FHEM Containers in Portainer bin, dann sehe ich den "Shutdown", dennoch schreibt es nichts in die Datei.
Habe nun das "at" und seit dem speichert es das ab.

Meine Docker Compose für FHEM:
version: '3'
services:

  fhem:
    container_name: FHEM
    image: fhem/fhem:latest
    hostname: fhem
    restart: always
    deploy:
      resources:
        limits:
          memory: 1536m
    networks:
      internal:
        ipv4_address: 172.88.0.7
      external:
        ipv4_address: 192.168.200.119
    ports:
      - "8083:8083"
      - "7072:7072"
      - "6767:6767/udp"
    environment:
      PIP_PKGS: "fhem beautifulsoup4"
      PAN_PKGS: "Crypt::Cipher::AES or Crypt::Rijndael_PP"
    volumes:
      - /UserPath/FHEM:/opt/fhem

Grüße
Gear
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Otto123

naja Du hast einen Würgaround gebaut. FHEM schreibt das state File wenn es ordentlich beendet wird. Du solltest die Ursache des Fehlers finden ...

Nochmal gefragt: Der Fehler entsteht wenn du den Container neu startest oder wenn Du in FHEM shutdown restart machst?

Du verwendest das von sidey gebaute fhem Image - das behandelt den shutdown des containers normalerweise ordentlich
https://github.com/fhem/fhem-docker/blob/dev/src/entry.sh
Welche Version setzt Du ein?

Was gibt Dir das zurück?
list global pidfilename
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

Wernieman

@Otto: Habe mich jetzt durch den Code versucht zu wühlen ... bist Du Dir sicher?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Otto123

In meinem Link ab Zeile 465 ...

Wenn FHEM z.B. keinen pidfile schreibt dann rennt er dort einfach durch und beendet Container ohne auf FHEM zu warten.
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

Gear

Zitat von: Otto123 am 12 Mai 2023, 23:01:32Was gibt Dir das zurück?
list global pidfilename
global ./log/fhem.pidDie PID File wird auch von Änderungsdatum verändert.


Zitat von: Otto123 am 12 Mai 2023, 23:01:32Nochmal gefragt: Der Fehler entsteht wenn du den Container neu startest oder wenn Du in FHEM shutdown restart machst?

So, habe nun folgendes getestet:

> Shutdown/Restart über FHEM
>> Wird das Änderungsdatum von fhem.save verändert.

> Restart, Stop > Start über Portainer
>> Wird das Änderungsdatum von fhem.save nicht verändert.

Zitat von: Otto123 am 12 Mai 2023, 23:01:32Du verwendest das von sidey gebaute fhem Image - das behandelt den shutdown des containers normalerweise ordentlich
https://github.com/fhem/fhem-docker/blob/dev/src/entry.sh
Welche Version setzt Du ein?

Nutze das von Docker Hub, habe eben das Img neu gezogen, bleibt unverändert.
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Otto123

Zitat von: Gear am 13 Mai 2023, 09:33:34Die PID File wird auch von Änderungsdatum verändert.
Das pidfile wird also wirklich geschrieben?
Im laufenden FHEM in der FHEM Kommandozeile testen:
{qx(ls -lha ./log/fhem.pid)}Das shutdown wird über local Telnet ausgelöst, gibt es das device?
list TYPE=telnetnormal heisst das device so
list telnetPort
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