Firmata/FRM_AD : Analog-Sensordaten erscheinen nicht im Log

Begonnen von subito, 01 März 2016, 13:29:02

Vorheriges Thema - Nächstes Thema

subito

Ich möchte Analog-Sensordaten (Füllstand einer Zisterne) vom Arduino-Yun Firmata/FRM_AD per Wlan zum Raspi-Fhem schicken.

Ausschnitt aus fhem.cfg:
...
define FIRMATA FRM 3030 global
attr FIRMATA sampling-interval 3000
...
define 7_Zisterne FRM_AD 19
attr 7_Zisterne IODev FIRMATA
attr 7_Zisterne event-min-interval .:30
attr 7_Zisterne event-on-update-reading .*
attr 7_Zisterne room all
attr 7_Zisterne stateFormat reading
attr 7_Zisterne verbose 5
...
define Level1 FileLog ./log/Level1-%Y-%m.log 7_Zisterne
attr Level1 logtype text
...
define SVG_Level1_1 SVG Level1:SVG_Level1_1:CURRENT
...

Fhem "all" zeigt:

FRM
FIRMATA                  Initialized
FIRMATA_192.168.1.67_58285            Connected
FRM_AD
7_Zisterne                reading

Die korrekten Firmata-Daten kommen im Fhem an und werden (neben einigen anderen, die ein nanoCUL liefert) mit verbose=5 im Event Monitor gezeigt:

2016.03.01 12:41:47 5 : FRM:<e1
2016.03.01 12:41:47 5 : FRM:<65
2016.03.01 12:41:47 5 : FRM:<03
2016.03.01 12:41:49 5 : FRM:<e1
2016.03.01 12:41:49 5 : FRM:<66
2016.03.01 12:41:49 5 : FRM:<03
2016-03-01 12:42:27 Revolt 1_Reserve power: 0.7
2016-03-01 12:42:27 Revolt 1_Reserve energy: 502.87
2016-03-01 12:42:29 Revolt 3_Gesamt power: 200.9
2016-03-01 12:42:29 Revolt 3_Gesamt energy: 326.77
2016-03-01 12:42:36 Revolt 2_Computer power: 128.7
2016-03-01 12:42:36 Revolt 2_Computer energy: 402.71
...


Wie bekomme ich die FRM-Daten in den Logfile "Level1"?

Darin sieht man sieht leider nur meine diversen Neustarts:

2016-03-01_12:14:24 7_Zisterne Initialized
2016-03-01_12:15:24 7_Zisterne Initialized
2016-03-01_12:39:32 7_Zisterne Initialized
2016-03-01_12:40:16 7_Zisterne Initialized

Ich bin für jede Hilfe dankbar!

Wzut

also wenn ich dein Bsp übernehmen habe ich sofort einen Wert ( Bsp 322) :
Internals:
   CFGFN
   DEF        19
   IODev      FIRMATA
   NAME       7_Zisterne
   NR         141686
   PIN        19
   STATE      322
   TYPE       FRM_AD
   resolution 10
   Readings:
     2016-03-01 16:23:02   reading         322
     2016-03-01 16:04:27   state           Initialized
Attributes:
   IODev      FIRMATA
   event-min-interval .:30
   room       test
   stateFormat reading
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

subito

Danke für die schnelle Reaktion.

Tja, der kleine aber entscheidende Unterschied ist:

Internals:
   DEF        19
   IODev      FIRMATA
   NAME       7_Zisterne
   NR         26
   PIN        19
   STATE      reading
   TYPE       FRM_AD
   Readings:
     2016-03-01 12:40:16   state           Initialized
Attributes:
   IODev      FIRMATA
   event-min-interval .:30
   event-on-update-reading .*
   room       all
   stateFormat reading
   verbose    5

Bei mir steht da leider nur STATE  reading,
aber kein Messwert  :'(

Kann da doch auf der Senderseite (=Arduino) etwas nicht stimmen?
Das Script habe ich mit "Firmatabuilder" erzeugt, einzige Option ist "Analog in":


void loop()
{
  while(Firmata.available())
  {
    Firmata.processInput();
  }

  if (reporting.elapsed())
  {
    analogInput.report();

    byte pin = 19;
    byte analogPin;

    analogPin = PIN_TO_ANALOG(pin);
    U1 = analogRead(analogPin);
 
    Firmata.sendAnalog(analogPin, U1);

    Console.println(U1);
 
    digitalWrite(13, HIGH);
    delay(600);
    digitalWrite(13, LOW);
    delay(1400);
     
  }
}


Den delay habe ich eingefügt um die Datenflut zu begrenzen,
mit Console.print sehe ich, was passiert.
Wenn ich das weglasse, wird Fhem mit Daten zugemüllt, aber STATE von "7_Zisterne" ist immernoch nur "reading", ohne Daten.

Irgendwelche Ideen?


Wzut

Zitat von: subito am 01 März 2016, 17:33:27
Das Script habe ich mit "Firmatabuilder" erzeugt, einzige Option ist "Analog in":

Irgendwelche Ideen?
Firmatabuilder kenne ich nicht , ich nutze seit Jahren die Configurable Firmata V2.06 auf einem Uno + W5100 Ethernet
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

subito

Hallo Wzut,

Firmatabuilder.com (siehe https://github.com/firmata/firmata-builder) dient lediglich zur Konfiguration von configurableFirmata, indem es die nicht benötigten #includes entfernt.

Sehen bei Deinem funktionierenden System die gelieferten FRM_AD-Daten im Event monitor mit verbose=5 oder mit Telnet fhem> inform log  so aus wie bei mir (e1 entspricht Analog-Pin A1 (=19 beim Yun), 39 03 (LSB MSB 7bit)  ist der Messwert = 441):

2016.03.01 22:36:12 5 : FRM:<e1
2016.03.01 22:36:12 5 : FRM:<39
2016.03.01 22:36:12 5 : FRM:<03
2016.03.01 22:36:14 5 : FRM:<e1
2016.03.01 22:36:14 5 : FRM:<3a
2016.03.01 22:36:14 5 : FRM:<03

Danke für Deine Hilfe!