Integration von MySensors in FHEM geplant?

Begonnen von fh555, 06 September 2014, 00:40:58

Vorheriges Thema - Nächstes Thema

fh555

Zitat von: hexenmeister am 02 November 2015, 22:24:25
Habe pull request an ntruchsess geschickt. Wenn dies angenommen wird, kommt der Patch in das offizielle FHEM-Repo.

Das wäre supi, Danke noch einmal  ;D

ntruchsess

Zitat von: hexenmeister am 02 November 2015, 22:24:25
Habe pull request an ntruchsess geschickt. Wenn dies angenommen wird, kommt der Patch in das offizielle FHEM-Repo.

germerged und ins SVN commited
while (!asleep()) {sheep++};

fh555

Danke,
das macht die Übersicht von verschiedenen Softwareversionen (gerade, wenn man mehrere Test-Sketche am laufen hat) bei MySensors wesentlich leichter :-)

Gruß Jens

SvenJust

Nach dem heutigen (12.11.2015) Update bekomme ich einen Fehler in der fhem-Logdatei angezeigt und alle mysensors-Devices können nicht mehr geladen werden. Der Fehler lautet:
2015.11.12 09:51:17 1: reload: Error:Modul 10_MYSENSORS_DEVICE deactivated:
syntax error at ./FHEM/10_MYSENSORS_DEVICE.pm line 502, near ");"

2015.11.12 09:51:17 0: syntax error at ./FHEM/10_MYSENSORS_DEVICE.pm line 502, near ");"


Es fehlt in der Zeile 502 eine (zweite) schließende runde Klammer vor dem Semikolon. Die Programmzeile lautet korrekt:
        Log3 ($name,4,"MYSENSORS_DEVICE $name: respond to config-request, node parentId = " . ($msg->{payload}));

Danke.

VG
Sven
FTUI, Raspberry PI/SSD, CUL CC1101, HMLAN, 10x HM-LC-Bl1PBU-FM, HM-LC-Sw4-WM (KWL Pluggit P300), HM-WDS30-OT2-SM (Sonnensensor), HM-Sec-SCo, LW-12 Wifi LED, CUL Selbstbau nanoCUL 433 (IT), Arduino (S0-Stromverbrauch), OW DS2480 (OWX_ASYNC) 8x DS18B20, MQTT (Fröling P4), MYSENSORS (Roto Rollläden)

fh555

seit dem heuigen Update, ist nicht nur das Problem was "SvenJust" schilderte, auch die Einträge der Softwareversion sind wieder verschwunden :-(

Gruß Jens

ntruchsess

Ist mir ja ein bischen peinlich, dass ich grade ungetesteten Mist commited habe (ich hatte grade unterwegs ein bischen Zeit, aber keine Testhardware um einen Patch einzubauen, den mir der User 'wmr72' vor einer Weile geschickt hat):

Zitat von: SvenJust am 12 November 2015, 10:50:15Es fehlt in der Zeile 502 eine (zweite) schließende runde Klammer vor dem Semikolon.

Naja, eigentlich war es eine Klammer zu viel.

Vielen Dank jedenfalls für den prompten Hinweis.

Gruß,

Norbert

P.S. auf die neuen Readings 'SKETCH_NAME' und 'SKETCH_VERSION' kann der Patch aber keinen Einfluss gehabt haben. Wenn die Readings nach einem Neustart weg sind, dann hat das Speichern und Wiedereinlesen des States nicht geklappt, dann kommen die Werte erst nach einem Sensor-reset wieder.
while (!asleep()) {sheep++};

fh555

Hallo ntruchsess und hexenmeister,
also ich habe den Sensor jetzt noch einmal aufgesucht, aufgeschraubt, reset ausgelöst.
Dann wieder wieder zurück zum Rechner und die neuen Readings 'SKETCH_NAME' und 'SKETCH_VERSION' sind wieder aktualiesiert wurden.

Daraufhin habe ich ins log geschaut und da war der Eintrag enthalten sowie der vom 01.11.2015 (als ich die geänderte Version getestet hatte). Also schein es erst einmal auch richtig abzuspeichern, nur mit den einlesen nach "längerer Zeit" scheint es nicht mehr zu funktionieren.  :-\

Gruß Jens

hexenmeister

Zitat von: fh555 am 12 November 2015, 22:38:43
Daraufhin habe ich ins log geschaut und da war der Eintrag enthalten sowie der vom 01.11.2015 (als ich die geänderte Version getestet hatte). Also schein es erst einmal auch richtig abzuspeichern, nur mit den einlesen nach "längerer Zeit" scheint es nicht mehr zu funktionieren.  :-\
Ich kann leider wenig dazu sagen, das ist ein generelles Mechanismus von FHEM (hat nicht direkt mit dem MS-Modul zu tun). Mir ist leider schleierhaft, warum das nicht funktioniert, vor allen nach 'längerer Zeit', ein Verfallsdatum gibt es meines Wissens nicht.

Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

fh555

#533
Gut, also weitergetestet.

1.
FHEM Server gestoppt, aus den LOG den eben generierten Eintrag gelöscht, also nur noch den vom 01.11. stehen gelassen, dann FHEM Server wieder gestartet. Readings hat den Wert noch von eben inkl. der Uhrzeit.

Woher?

2.
FHEM Server runtergefahren und Raspi neu gestartet
Readings immernoch den Wert von eben inkl. der Uhrzeit


SKETCH_NAME Feuchte-BC547/BAT 2015-11-12 22:26:59
SKETCH_VERSION 2.5.C 2015-11-12 22:26:59
batterylevel 100 2015-11-12 22:58:46
brightness1 886 2015-11-12 22:58:46
parentId 0 2015-11-12 22:26:57


Wo holt er die Werte her? Wie schon gesagt, im Log vom Sensor, steht nur noch der Eintrag vom 01.11.2015

hexenmeister

Jetzt verstehe ich, was du da machst  ;D
Nene, Log hat damit nichts zu tun. Die aktuellen (letzten) Werte stehen in der State-Datei: fhem.save
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

fh555

#535
Also fehlt dort dann irgendwann der Eintrag.
Aber wann?
Das ist doch Mist, wenn man das nicht Nachvollziehen kann, wann der Eintrag aus der "fhem.save" verschwindet und warum.

hexenmeister

Dort stehen nur die Befehle zum Setzen der Readings-Werte. Also nur die Abbildung des letzten Standes. Irgendwann konnte der Wert nicht gesetzt werden, z.B. weil der Modul nicht geladen war (das aktuelle Klammerproblem). Danach wurde der Abbild ohne diesen Wert geschrieben.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

fh555

naja, dann würde es ja funktionieren und wenn es "ntruchsess" durch das Klammerproblem nicht aus den Tritt gebracht hätte, wären wir auf das Problem evtl. gar nicht aufmerksam geworden (ich wollte nicht so Hart zu ntruchsess sein  ::) )

Also wenn das Modul nicht sauber geladen wird und die Sensoren dann wieder mit gefixten Modul übtragen, werden die alten Werte gelöscht. Das ist aber trotzdem Mist.

Überlege mal, wenn du 10 - 20 verbaute Sensoren hast und dir die Arbeit machst, noch einmal alle aufzusuchen, zu öffnen um ein reset auszulösen, dann wieder zusammenbauen und dann kommt irgendwann ein Update, welches fehlerhaft ist und dann sind alle Werte weg, das ist schon ärgerlich  :-\ oder etwa nicht?

hexenmeister

Nun ja, wenn das Device nicht da ist, kann auch kein Reading gesetzt werden. FHEM verhält sich schon korrekt. Und Fehler passieren nun mal.
MySensor-Devices können remote restartet werden, dafür muss allerdings ein passender Bootloader drauf. Gewöhnliche Pro Minis gehen dabei in eine unendliche ResetSchleife.
Mache doch einfach ein automatisches Backup deiner StateFile, dann kannst Du bei Bedarf die Werte rausholen und über die Console setzen lassen.
Z.B. so:
define backupCfg notify global:SAVE {\
  my $now = TimeNow();; $now =~ s/ /_/g;; $now =~ s/:/-/g;; \
  `cp $attr{global}{configfile} ./savedir/$now.fhem.cfg`;;\
  `cp $attr{global}{statefile} ./savedir/$now.fhem.state`;;\
}


Damit bei einem Abstürz möglichst wenig verloren geht, kann man StateFile regelmäßig sichern:
define saveState at +*00:10:00 {WriteStatefile()}
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

ntruchsess

das Verhalten, dass Readings verschwinden, wenn sie beim Laden der fhem.save nicht übernommen werden können ist jedenfalls nicht MySensors-spezifisch, das kann prinzipiell mit jedem anderen Device auch passieren.
Finde ich auch nicht so doll - aber wenn man das Ändern wollte, müsste man den fhem-eigenen State-saving/-restore Mechanismus dahingehend überarbeiten - im MYSENSORS_DEVICE selbst kann man daran nicht viel ändern.
while (!asleep()) {sheep++};