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!
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
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?
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
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!