FRM & FHEM-Crash

Begonnen von ThoTo, 15 Dezember 2017, 15:35:16

Vorheriges Thema - Nächstes Thema

Joerg

Hallo Thomas,

hatte ein aehnliches Problem. Firmata CPU war ueber 20m seriell mit einem FTDI und RPI verbunden. Da ist die Baudrate zu hoch. Mit 9600 funktioniert es jetzt.

Gruss

Joerg

jensb

Das Log von @rino sieht für mich so aus, als ob der Arduino sich resettet (z.B. zu wenig Speicher?). Nach dem Reset initialisiert das FRM-Device die Verbindung neu. OWX bzw. OWX_FRM implementieren aber keine InitFn, bekommen den Reconnect scheinbar nicht mit und bleiben hängen. OWX ist aktuell möglicherweise nicht reconnectfähig.

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

JensS

Hallo Thomas,

wenn du am Arduino i2c nutzt, dann wäre ein "attr fhem_hw i2c-config 30000" einen Versuch wert.

Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

ThoTo

Zitat von: jensb am 08 Januar 2018, 23:40:30
Das Log von @rino sieht für mich so aus, als ob der Arduino sich resettet (z.B. zu wenig Speicher?). Nach dem Reset initialisiert das FRM-Device die Verbindung neu. OWX bzw. OWX_FRM implementieren aber keine InitFn, bekommen den Reconnect scheinbar nicht mit und bleiben hängen. OWX ist aktuell möglicherweise nicht reconnectfähig.

Grüße,
Jens

Ja, genau dieses Verhalten hatte ich beobachtet.
Nur mit dem Nebeneffekt, dass FHEM ohne deinen Patch abgestürzt ist.

@pah hat noch in keinem der offenen Threads eine Rückmeldung gegeben, oder?

LG Thomas
KNX | MQTT | Docker | Sonos | FHEMapp

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)

rino

#19
Moin,

wollte mich ja melden. OWX hat seinen Dienst wieder eingestellt

2018.01.09 06:47:48 1: OWX_FRM::Complex receiving outside loop 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x44
2018.01.09 06:47:49 1: OWX_FRM::Complex receiving inside loop no. 0 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0xbe 0x9a 0x03 0x55 0x00 0x7f 0xff 0xff 0xff 0xbc
2018.01.09 06:48:17 1: /dev/ttyUSB0 disconnected, waiting to reappear (ArduinoHWR)
2018.01.09 06:48:18 3: Setting ArduinoHWR serial parameters to 57600,8,N,1
2018.01.09 06:48:18 1: /dev/ttyUSB0 reappeared (ArduinoHWR)
2018.01.09 06:48:21 3: ArduinoHWR querying Firmata versions
2018.01.09 06:48:23 3: ArduinoHWR Firmata Firmware Version: hwr.ino V_2_10 (using Protocol Version: V_2_06)


Daher gehe ich wie Jens davon aus, das ..

Zitat von: jensb am 08 Januar 2018, 23:40:30
OWX ist aktuell möglicherweise nicht reconnectfähig.

Grüße,
Jens

ist, da mein S0-Stromzähler, welcher am gleichen Arduino hängt, fleissig weiter zählt.

Internals:
   DEF        3
   IODev      ArduinoHWR
   NAME       strom_counter
   NR         302
   PIN        3
   STATE      Watt: 268.09  kWh: 772.44
   TYPE       FRM_IN
   READINGS:
     2018-01-09 14:54:39   count           6068
     2018-01-09 14:54:39   power           268.088727911901
     2018-01-09 14:54:39   powersum        772.439499999697
     2018-01-09 14:54:39   powersum_HausZ  76503.2449998623
     2018-01-09 14:54:39   reading         off
     2018-01-09 06:48:23   state           Initialized
     2018-01-09 14:54:39   time            1515506079.59032


Gruß

Reiner

Update:

Ein einfaches restart reicht bei mit aus, dann werden wieder Temperaturen geloggt.

Ich glaub, das fehlt:

2018.01.09 14:59:50 1: OWX_Init called for bus heiztemp with interface state Initialized, now going for detect

JensS

Hallo Thomas, hast du die fhem.save gesichert? Mich würden die gelöschten Readings interessieren. Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

jensb

Hallo Reiner,

versuch herauszufinden, warum sich dein Arduino resettet. Selbst wenn der OWX-Reconnect klappen würde, ist das so keine Lösung und normal ist das auch nicht. Ein Arduino mit Firmata sollte ein Daueräufer sein.

Ein paar Vorschläge gab es ja schon von @Joerg und mir: Leitungslänge (Störeinkopplungen), Netzteil (Spannungsstabilität), Speicher. Serielles Debuggen ist leider nicht so einfach, wenn du USB verwendest. Dazu müsstest du einen passenden Arduino mit freien seriellen Pins und genug Speicher für SerialFirmata haben.

Was bei OWX/OWX_FRM klemmt, kann ich nicht ohne weiteres herausfinden, da ich keinen passenden Testaufbau habe. Habe mir OWX und OWX_FRM erneut angesehen habe. Es gibt zwar keine InitFn aber eine ReadyFn. Mit der ReadyFn kann man z.T. auch Connects und Disconnects von IO-Devices erkennen. Wenn ich das richtig sehe, ist FRM das IODevice von OWX. Daher würde ich zuerst in OWX_Ready in jede Zeile ein Logging einbauen, um herauszufinden, ob Ready überhaupt bei einem Firmata-Reset reagiert und wenn ja, wo es momentan langläuft. Ist möglicherweise eine Sackgasse, aber einen Versuch wert.

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

ThoTo

Hallo Jens!

Zitat von: dirigent am 09 Januar 2018, 07:12:14
wenn du am Arduino i2c nutzt, dann wäre ein "attr fhem_hw i2c-config 30000" einen Versuch wert.
Leider nein, nutze 1Wire.

Zitat von: dirigent am 09 Januar 2018, 21:57:59
Hallo Thomas, hast du die fhem.save gesichert? Mich würden die gelöschten Readings interessieren. Gruß Jens
War das für mich?  ;) Werde sie trotzdem sichern, wenn das nächste Mal etwas auftritt.


Was ich auf jeden Fall versuche ist die Baudrate runterzudrehen und werden mich auch nochmal mit dem Arduino beschäftigen.....


LG Thomas
KNX | MQTT | Docker | Sonos | FHEMapp

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)

rino

Zitat von: jensb am 09 Januar 2018, 22:24:16
versuch herauszufinden, warum sich dein Arduino resettet. Selbst wenn der OWX-Reconnect klappen würde, ist das so keine Lösung und normal ist das auch nicht. Ein Arduino mit Firmata sollte ein Daueräufer sein.

Ich habe meine alten Logs angeschaut. Vor dem Update (ich meine im Oktober) hat sich der Arduino auch zwischendurch resettet.
Das ist mir nicht weiter aufgefallen, da es da ja lief.

Ich werde mir also bei Gelegenheit das ganze mal anschauen.

Somit erstmal vielen Dank für die Tipps

Gruß

Reiner

JensS

Ok, Brief kam auf Grund falscher Adresse zurück. Diesmal richtig:  ;)
@Reiner, hast du die fhem.save gesichert? Mich würden die gelöschten Readings interessieren.

@Thomas, wenn du i2c und andere Features nicht nutzt, dann deaktiviere sie besser im Sketch.
Zitati2c_pins   18,19

Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

rino

Zitat von: dirigent am 10 Januar 2018, 16:37:34
@Reiner, hast du die fhem.save gesichert? Mich würden die gelöschten Readings interessieren.

Gruß Jens

Dieses hier?

#Mon Jan  8 00:40:14 2018

setstate ArduinoHWR 2018-01-08 00:37:45 state Initialized

setstate FileLog_Speicher_ruecklauf active
setstate FileLog_Speicher_ruecklauf 2018-01-08 00:35:18 linesInTheFile 482
setstate FileLog_Speicher_temp active
setstate FileLog_Speicher_temp 2018-01-08 00:35:19 linesInTheFile 522
setstate FileLog_Speicher_vorlauf active
setstate FileLog_Speicher_vorlauf 2018-01-08 00:35:20 linesInTheFile 220

setstate FileLog_ruecklauf active
setstate FileLog_ruecklauf 2018-01-08 00:35:21 linesInTheFile 498
setstate FileLog_vorlauf active
setstate FileLog_vorlauf 2018-01-08 00:35:22 linesInTheFile 498

setstate SVG_FileLog_Speicher_temp_1 initialized

setstate SVG_FileLog_vorlauf_1 initialized

setstate Speicher_ruecklauf 2018-01-08 00:37:40 state defined
setstate Speicher_ruecklauf 2018-01-08 00:35:18 temperature 37.625
setstate Speicher_temp defined
setstate Speicher_temp 2018-01-08 00:37:40 state defined
setstate Speicher_temp 2018-01-08 00:35:19 temperature 56.625
setstate Speicher_vorlauf defined
setstate Speicher_vorlauf 2018-01-08 00:37:40 state defined
setstate Speicher_vorlauf 2018-01-08 00:35:20 temperature 27.25

setstate heiztemp 2018-01-08 00:37:37 queue 0
setstate heiztemp 2018-01-07 22:24:08 state disconnected

setstate log_strom_counter active
setstate log_strom_counter 2018-01-08 00:40:10 linesInTheFile 155770

setstate ruecklauf defined
setstate ruecklauf 2018-01-08 00:37:40 state defined
setstate ruecklauf 2018-01-08 00:35:21 temperature 34.5625
setstate strom_counter Watt: 147.50  kWh: 765.17
setstate strom_counter 2018-01-08 00:40:10 count 12
setstate strom_counter 2018-01-08 00:40:10 power 147.496068805098
setstate strom_counter 2018-01-08 00:40:10 powersum 765.165499999869
setstate strom_counter 2018-01-08 00:40:10 powersum_HausZ 76495.9709999402
setstate strom_counter 2018-01-08 00:40:10 reading off
setstate strom_counter 2018-01-08 00:37:45 state Initialized
setstate strom_counter 2018-01-08 00:40:10 time 1515368410.1253
setstate vorlauf defined
setstate vorlauf 2018-01-08 00:37:40 state defined
setstate vorlauf 2018-01-08 00:35:22 temperature 37.8125

JensS

Danke, leider nichts Auffälliges dabei. Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

jensb

@rino hatte geschrieben
ZitatEin einfaches restart reicht bei mit aus, dann werden wieder Temperaturen geloggt.
Vielleicht ist es vor allem der Neustart, der hilft. Beim Neustart werde alle Internals gelöscht, denn die stehen nicht in der fhem.save. Module arbeiten gern mit den Internals, gerade bei Kommunikationsabläufen. Um herauszufinden, welches Internal es sein könnte, müsste man einen Screenshot vom OWX-Device machen, bevor man neu startet und einen weiteren nach dem Neustart, aber mit vorher entferntem Arduino, damit keine Verbindung aufgebaut wird.

Die ReadyFn des OWX_FRM-Moduls ist übrigens ein Dummy, d.h. sie kann nicht feststellen, ob sich USB oder LAN verbunden oder getrennt haben. Was passiert eigentlich, wenn man z.B. am OWX-Device "set closeopen" oder "set reopen" aufruft, wenn die Kommunikation klemmt?

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

rino

OK, melde mich wenn es wieder klemmt.
Zur Zeit läuft es ja...

Gruß

Reiner

abc2006

mit dem Speicheroptimieren häng ich mich hier mal rein... für Onewire braucht man nur FirmataExt und Onewire?
Habe verschiedenes gelesen, dass da diverse Abhängigkeiten bestehen, aber bisher keine gute Lösung gefunden..

Weiss jemand sicher, welche Teile man für (ausschließlich) onewireFirmata braucht?
Vielleicht sinds bei mir ja auch Speicherprobleme ...

Grüße,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX