Hauptmenü

Firmata+Arduino

Begonnen von Rohan, 31 Januar 2013, 14:31:12

Vorheriges Thema - Nächstes Thema

ntruchsess

da ist vermutlich der Arduino abgestürzt. Jedenfalls hat er Daten geschickt, die gar nicht ins Protocol gepasst haben. Fällt (was die Freezes angeht) eigentlich in die gleiche Kathegorie wie ein Disconnect, nur dass die TCP-Verbindung noch steht. Da muss ich mir echt Gedanken machen, wie sowas sinnvoll zu Erkennen und zu Handhaben wäre.

Gruß,

Norbert
while (!asleep()) {sheep++};

T.ihmann

So hier haben wir das Log von fhem.pl beim Absturz

Can't call method "packet_onewire_request" on an undefined value at FHEM/lib/Device/Firmata/Platform.pm line 779.
Can't use an undefined value as a symbol reference at FHEM/Blocking.pm line 129.


Und hier das dazugehörige Fhem interne Log

2014.05.22 04:16:24 1: 3030 disconnected, waiting to reappear (FRM:192.168.178.150:1025)
2014.05.22 04:18:14 1: CallBlockingFn: Can't connect to localhost:7072


Uptime ist immer ca. 10h, dann wird fhem.pl beendet  :(

Tobias

Norbert, zur Info....
Diese Meldungen finde ich auch öfters im Log, immer im Doppelpack:
Use of uninitialized value in sprintf at ./FHEM/OWX_FRM.pm line 166.
Use of uninitialized value in sprintf at ./FHEM/OWX_FRM.pm line 166.
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

T.ihmann

Ich bin ein Stück weitergekommen: Meine Recherchen haben folgendes ergeben. Ein Großteil der Standard Arduino Bootloader unterstützt den Watchdog Timer wdt nicht, der Arduino bleibt in einer Bootschleife stecken. Es gibt einen Bootloader der wdt unterstützt: optiboot. Ich habe also folgendes gemacht

- optiboot heruntergeladen und in die Arduino IDE integriert
- optiboot Bootloader mit einem USBASP Programmer auf den Arduino Nano geflasht
- Sketch um wdt ergänzt, neu compiliert und auf den Arduino Nano geflasht

Jetzt läuft der Arduino testhalber, ich hoffe er rebootet, wenn er sich aufhängt und fhem.pl bleibt nicht hängen....wir werden sehen

T.ihmann

Kleiner Zwischenstand: 21h später immer noch kein Absturz von fhem.pl. Ob sich der Arduino in der Zeit rebootet hat kann ich im Log so nicht wirklich erkennen. Soweit bin ich schon mal zufrieden, werde weiter berichten. Wenn es wirklich eine stabile Lösung ist, werde ich es noch einmal genau beschreiben.

Tobias

Hi,
ich kann mir u.U. nicht ganz vorstellen das der Arduino Sketch an allem Schuld sein soll.
Es kommt oft vor das ich fhem neu starten muss, und sehr oft von der ersten Uptime-Minute an habe ich 1sek freezes die sich dann immer weiter hochschaukeln.
Gott-sei-Dank habe ich den Arduino nur auf dem BreadBoard in meiner Testumgebung integriert...

Habe jetzt OWX ohne ASYNC laufen, da kamen jetzt innerhalb der ersten 4h nur selten 1,5sek freezes, aber ab ca der 4h schauelte sich das langsam hoch... Eine explizite  Fehlermeldung kam diesmal nicht im Log
Ich bin gerade ratlos wie ich genauere Fehlerbeschreibungen liefern kann....
2014.05.26 10:41:42 3: querying Firmata Firmware Version
2014.05.26 10:41:42 3: Firmata Firmware Version: ConfigurableFirmata.ino V_2_06
2014.05.26 10:41:42 3: received String_data: Unhandled sysex command
2014.05.26 10:41:44 1: possible freeze: timer should 08:41:40, delay is 3.96334505081177
2014.05.26 10:41:44 3: received String_data: Unhandled sysex command
2014.05.26 10:41:47 1: possible freeze: timer should 08:41:45, delay is 2.32190704345703
2014.05.26 10:41:54 2: OWX: 1-Wire devices found on bus owxFRM (OWX_28_F6A72A040000,OWX_28_25B52A040000,OWX_28_2DB12A0400                                             00,OWX_28_EFAC2A040000,OWX_26_3D2E27010000,OWX_29_8A0E11000000)
2014.05.26 10:42:19 1: possible freeze: timer should 08:42:18, delay is 1.04033017158508
2014.05.26 10:49:15 1: possible freeze: timer should 08:49:14, delay is 1.11959910392761
2014.05.26 10:50:15 1: possible freeze: timer should 08:50:14, delay is 1.01773810386658
2014.05.26 10:51:15 1: possible freeze: timer should 08:51:14, delay is 1.11456799507141
2014.05.26 10:53:15 1: possible freeze: timer should 08:53:14, delay is 1.12165284156799
2014.05.26 10:54:15 1: possible freeze: timer should 08:54:14, delay is 1.11236119270325
2014.05.26 10:54:45 1: possible freeze: timer should 08:54:44, delay is 1.11431097984314
2014.05.26 11:02:45 1: possible freeze: timer should 09:02:44, delay is 1.1352379322052
2014.05.26 11:03:45 1: possible freeze: timer should 09:03:44, delay is 1.05948185920715
2014.05.26 11:04:15 1: possible freeze: timer should 09:04:14, delay is 1.10373711585999
2014.05.26 11:10:16 1: possible freeze: timer should 09:10:15, delay is 1.26301789283752
2014.05.26 11:41:13 1: possible freeze: timer should 09:41:12, delay is 1.20133590698242
2014.05.26 11:50:10 1: possible freeze: timer should 09:50:09, delay is 1.07961010932922
2014.05.26 11:50:40 1: possible freeze: timer should 09:50:39, delay is 1.07968592643738
2014.05.26 12:22:08 1: possible freeze: timer should 10:22:07, delay is 1.34107208251953
2014.05.26 12:43:34 1: possible freeze: timer should 10:43:33, delay is 1.14691305160522
2014.05.26 12:44:04 1: possible freeze: timer should 10:44:03, delay is 1.22000503540039
2014.05.26 12:48:04 1: possible freeze: timer should 10:48:03, delay is 1.18778204917908
2014.05.26 12:51:04 1: possible freeze: timer should 10:51:03, delay is 1.3338611125946
2014.05.26 12:54:02 1: possible freeze: timer should 10:54:01, delay is 1.02016711235046
2014.05.26 14:52:00 1: possible freeze: timer should 12:51:59, delay is 1.1133120059967
2014.05.26 14:52:02 1: possible freeze: timer should 12:52:01, delay is 1.09643387794495
2014.05.26 14:52:04 1: possible freeze: timer should 12:52:03, delay is 1.30282211303711
2014.05.26 14:52:06 1: possible freeze: timer should 12:52:05, delay is 1.3389630317688
2014.05.26 14:52:09 1: possible freeze: timer should 12:52:07, delay is 1.24475502967834
2014.05.26 14:52:11 1: possible freeze: timer should 12:52:10, delay is 1.74670600891113
2014.05.26 14:52:14 1: possible freeze: timer should 12:52:12, delay is 1.44876098632812
2014.05.26 14:52:17 1: possible freeze: timer should 12:52:15, delay is 1.863126039505
2014.05.26 14:52:20 1: possible freeze: timer should 12:52:18, delay is 2.24562692642212
2014.05.26 14:52:23 1: possible freeze: timer should 12:52:21, delay is 2.30546593666077
2014.05.26 14:52:27 1: possible freeze: timer should 12:52:24, delay is 3.21186113357544
2014.05.26 14:52:31 1: possible freeze: timer should 12:52:28, delay is 2.68441987037659
2014.05.26 14:52:35 1: possible freeze: timer should 12:52:32, delay is 3.09687614440918
2014.05.26 14:52:39 1: possible freeze: timer should 12:52:36, delay is 3.11249899864197
2014.05.26 14:52:43 1: possible freeze: timer should 12:52:40, delay is 2.87595200538635
2014.05.26 14:52:47 1: possible freeze: timer should 12:52:44, delay is 3.13055896759033
2014.05.26 14:52:52 1: possible freeze: timer should 12:52:48, delay is 3.97237491607666
2014.05.26 14:52:57 1: possible freeze: timer should 12:52:53, delay is 3.39404106140137
2014.05.26 14:53:02 1: possible freeze: timer should 12:52:58, delay is 4.5477979183197
2014.05.26 14:53:08 1: possible freeze: timer should 12:53:03, delay is 4.49539804458618
2014.05.26 14:53:13 1: possible freeze: timer should 12:53:09, delay is 4.14216804504395
2014.05.26 14:53:19 1: possible freeze: timer should 12:53:14, delay is 4.67156887054443
2014.05.26 14:53:24 1: possible freeze: timer should 12:53:20, delay is 4.35747408866882
2014.05.26 14:53:31 1: possible freeze: timer should 12:53:25, delay is 5.63847088813782
2014.05.26 14:53:37 1: possible freeze: timer should 12:53:32, delay is 5.58831906318665
2014.05.26 14:53:44 1: possible freeze: timer should 12:53:38, delay is 5.79695701599121
2014.05.26 14:53:51 1: possible freeze: timer should 12:53:45, delay is 5.65792107582092
2014.05.26 14:53:57 1: possible freeze: timer should 12:53:52, delay is 5.73518586158752
2014.05.26 14:54:05 1: possible freeze: timer should 12:53:58, delay is 6.35047197341919
2014.05.26 14:54:13 1: possible freeze: timer should 12:54:06, delay is 7.44526314735413
2014.05.26 14:54:21 1: possible freeze: timer should 12:54:14, delay is 7.28559398651123
2014.05.26 14:54:29 1: possible freeze: timer should 12:54:22, delay is 6.48327088356018
2014.05.26 14:54:37 1: possible freeze: timer should 12:54:30, delay is 7.29587197303772
2014.05.26 14:54:46 1: possible freeze: timer should 12:54:38, delay is 7.37442016601562
2014.05.26 14:54:55 1: possible freeze: timer should 12:54:47, delay is 8.47437500953674
2014.05.26 14:55:04 1: possible freeze: timer should 12:54:56, delay is 7.82140898704529
2014.05.26 14:55:13 1: possible freeze: timer should 12:55:05, delay is 8.32250285148621
2014.05.26 14:55:23 1: possible freeze: timer should 12:55:14, delay is 8.76477909088135
2014.05.26 14:55:33 1: possible freeze: timer should 12:55:24, delay is 9.35533905029297
2014.05.26 14:55:43 1: possible freeze: timer should 12:55:34, delay is 9.15457797050476
2014.05.26 14:55:54 1: possible freeze: timer should 12:55:44, delay is 9.07524704933167
2014.05.26 14:56:04 1: possible freeze: timer should 12:55:55, delay is 9.86088490486145
2014.05.26 14:56:16 1: possible freeze: timer should 12:56:05, delay is 10.4884929656982
2014.05.26 14:56:27 1: possible freeze: timer should 12:56:17, delay is 9.63496112823486
2014.05.26 14:56:38 1: possible freeze: timer should 12:56:28, delay is 10.7487919330597
2014.05.26 14:56:51 1: possible freeze: timer should 12:56:39, delay is 11.502454996109
2014.05.26 14:57:03 1: possible freeze: timer should 12:56:52, delay is 11.3467049598694
2014.05.26 14:57:15 1: possible freeze: timer should 12:57:04, delay is 11.2846300601959
2014.05.26 14:57:29 1: possible freeze: timer should 12:57:16, delay is 12.39821600914
2014.05.26 14:57:42 1: possible freeze: timer should 12:57:30, delay is 12.4572739601135
2014.05.26 14:57:55 1: possible freeze: timer should 12:57:43, delay is 11.9162659645081
2014.05.26 14:58:10 1: possible freeze: timer should 12:57:56, delay is 13.8344261646271
2014.05.26 14:58:24 1: possible freeze: timer should 12:58:11, delay is 12.9472048282623
2014.05.26 14:58:38 1: possible freeze: timer should 12:58:25, delay is 13.1953661441803
2014.05.26 14:58:53 1: possible freeze: timer should 12:58:39, delay is 14.1782069206238
2014.05.26 14:59:08 1: possible freeze: timer should 12:58:54, delay is 14.0698349475861
2014.05.26 14:59:24 1: possible freeze: timer should 12:59:09, delay is 14.4133810997009
2014.05.26 14:59:39 1: possible freeze: timer should 12:59:25, delay is 14.671835899353
2014.05.26 14:59:56 1: possible freeze: timer should 12:59:40, delay is 15.1609079837799
2014.05.26 15:00:12 1: possible freeze: timer should 12:59:57, delay is 15.741574048996
2014.05.26 15:00:30 1: possible freeze: timer should 13:00:13, delay is 16.2122130393982
2014.05.26 15:00:47 1: possible freeze: timer should 13:00:31, delay is 16.650671005249
2014.05.26 15:01:05 1: possible freeze: timer should 13:00:48, delay is 16.3852858543396
2014.05.26 15:01:23 1: possible freeze: timer should 13:01:06, delay is 16.8800311088562
2014.05.26 15:01:40 1: possible freeze: timer should 13:01:24, delay is 16.7454850673676
2014.05.26 15:01:59 1: possible freeze: timer should 13:01:41, delay is 17.8772439956665
2014.05.26 15:02:18 1: possible freeze: timer should 13:02:00, delay is 17.717964887619
2014.05.26 15:02:37 1: possible freeze: timer should 13:02:19, delay is 18.0434391498566
2014.05.26 15:02:57 1: possible freeze: timer should 13:02:38, delay is 19.3171048164368
2014.05.26 15:03:17 1: possible freeze: timer should 13:02:58, delay is 18.7500851154327
2014.05.26 15:03:37 1: possible freeze: timer should 13:03:18, delay is 19.0350549221039
2014.05.26 15:03:57 1: possible freeze: timer should 13:03:38, delay is 19.4059960842133
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

ntruchsess

Wollte nur mal kurz auch hier alle informieren (damit das nicht im 1-Wire Forum untergeht): ich habe vor ein paar Tagen einen Fix für einen Bug in der perl-firmata committed (und hier darüber berichtet), der in praktisch allen FRM-clients sporadisch zu Fehlern geführt hat (auf schnellen Rechnern mit höherer Wahrscheinlichkeit).

Ein Update lohnt sich also auch für alle, die gar kein 1-Wire einsetzen.

Gruß,

Norbert
while (!asleep()) {sheep++};

mago0211

Hallo Norbert,

ich habe mal wieder eine Frage ::)

Auf einem Arduino Mega läuft deine Configurable Firmata alles soweit ok!

Ich habe mir folgendes LCD besorgt: Saint Smart 2004 I2C Ardesse 63
Das ganze habe ich eingebunden mit
define Display FRM_LCD i2c 16 2 63

Soweit auch alles Ok! Ich kann Texte setzten und da beginnt meine Frage.
Im Commandref sind die einzelnen Befehle aufgelistet (backlight, reset, text, ......) leider gibt es keine nähere Beschreibung dazu bzw. ich habe keine gefunden.
Gibt es da irgendwo eine Übersicht?

Ich würde gerne Texte in verschiedene Zeilen schreiben nur steh ich im Moment etwas auf dem schlauch wie ich das hinbekomme?

Gruß
Markus

ntruchsess

#353
FRM_LCD ist obsolet und nach I2C_LCD migriert worden (geht jetzt nicht nur mit FRM, sondern auch mit anderen I2C-busmastern). Eine bessere Beschreibung als in der Commandref habe ich leider nicht.

ein 2004 LCD solltest Du aber besser mit

define Display I2C_LCD 20 04 63

(beachte die parameter '20 04' für die korrekte Größe, der parameter 'i2c' ist weggefallen) definieren...

Gruß,

Norbert
while (!asleep()) {sheep++};

T.ihmann

Gibt es eine Möglichkeit mit der Firmata auf dem Arduino berechnete Werte abzufragen ?

mago0211

Hallo,

Zitatein 2004 LCD solltest Du aber besser mit
Code: [Auswählen]
define Display I2C_LCD 20 04 63
(beachte die parameter '20 04' für die korrekte Größe, der parameter 'i2c' ist weggefallen) definieren...

Ja habe ich bereits angepasst gehabt aber trotzdem danke für den Hinweis.
Ich werde mal ein neue Thema hier im Forum aufmachen vielleicht weis ja jemand mehr über die Befehle.

Gruß
Markus

mago0211

Hallo Norbert,

ich habe gesehen bei ebay gibts Regensensoren für den Arduino
http://www.ebay.de/itm/Regensensor-Regentropfen-Schneesensor-Feuchtigkeitsensor-Sensor-Arduino-Bascom-/121370374741?pt=Wissenschaftliche_Ger%C3%A4te&hash=item1c423cf255

Einmal kann man ihn Anschließen wie einen normalen Schließer (Active Low) und einmal per Analoganschluss dieser kann Quasi anzeigen wie stark es Regnet die Spannung fällt dann von 5VDC entsprechend ab.

Kann man den Analoganschluss mit der Firmata auswerten?

Gruß
Markus

ntruchsess

sollte mit FRM_AD kein Problem sein

Gruß,
Norbert
while (!asleep()) {sheep++};

mago0211

Hallo Norbert,

ja passt so weit ich kann ihn über einen Analog Pin auslesen.

Eine Frage noch.  ::)
Die Daten kommen ja Sekundenweise an beim reading. Ist da der Traffic auf Dauer nicht zu hoch?

Mir würde es besser gefallen nur alle 2 min oder so abzufragen ist das möglich?

Hintergrund ist das ich etwas Bedenken habe das die Performance des Pi darunter leiden könnte.
Zusätzlich verwende ich die dbLog, und dort wird alles mit geloggt, jetzt ists halt so das mir der Regensensor die dbLog ganz schön vollmüllt  :-\.


Danke und Gruß
Markus

ntruchsess

kein Problem, man kann das Sampling-Intervall am FRM-device per Attribut einstellen. Leider nur ein Intervall für alle FRM_AD Geräte (liegt an Firmata, nicht FRM)
while (!asleep()) {sheep++};