Firmata Update für Firmware-Versionen ab 2.7

Begonnen von jensb, 29 Dezember 2017, 21:35:33

Vorheriges Thema - Nächstes Thema

jensb

@Achim
Das du unter diesen Umständen nichts ändern willst, kann ich gut verstehen. Ich bin aus diesem Grund zum WIZ5100 gewechselt, da hat man etwas mehr Spielraum. Habe mir den ursprünglichen Ablauf im FRM-Modul noch einmal angesehen. Da wird ein Timeout verwendet, wenn der Arduino nicht auf die "analog capabilities" antwortet. Werde das nachbauen und mich melden.

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

Achim

Hallo,

bei mir sind die "perl-firmata" Treiber in dem LIB Verzeichnis durch das FHEM Update mit aktualisiert worden.

Viele Grüße
Achim
1x RPi V1, COC, 6x FHT, 1x S300TH, 2x DS18B20, 1x KS300
1x Arduino Nano mit Firmata, 2x DS2423old, 4x DS18B20, HIH5030, verschiedene Ein/Ausgangsschaltungen am Arduino
Mysensors-Seriell Gateway, Si7021, BH1750, Relais

jensb

#32
@Achim
Hier ein gepatchtes FRM-Modul für den Verbindungsaufbau ohne AnalogInputFirmata. Wäre super, wenn du es heute noch testen könntest.

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

#33
@Achim,

ich weiß nicht, ob es noch relevant ist aber ntruchsess hat mir mal einen Tipp gegeben, wie man beim ENC28J60 etwas Speicher reduzieren kann.
https://forum.fhem.de/index.php/topic,31715.msg247573.html#msg247573

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.

Achim

Hallo Jens,

deine Testversion ohne AnalogInput funktioniert bei mir. Hier der Logfile Auszug beim Neustart von FHEM:
Zitat2018.01.05 18:29:19 3: Ardu_Nano1 querying Firmata versions
2018.01.05 18:29:21 3: Ardu_Nano1 Firmata Firmware Version: Eth6.ino V_2_06 (using Protocol Version: V_2_06)
2018.01.05 18:29:28 3: received String_data: Unhandled sysex command
Die Meldung "unhandled sysex" ist trotz abgeschaltetem Analoginput noch vorhanden.

Die "Internals" vom FRM Modul haben sich etwas geändert:
Zitatfirmware_version   V_2_06
input_pins   2,3,4,5,6,7,8,9,14,15,16,17,18,19
onewire_pins   2,3,4,5,6,7,8,9,14,15,16,17,18,19
output_pins   2,3,4,5,6,7,8,9,14,15,16,17,18,19
protocol_version   V_2_06

Was ist der Unterschied zwischen der Firmware_version und der protocol_version? Und was kann man mit den Pin-Angabe anfangen? Woher kommen diese Infos?

Viele Grüße
Achim
1x RPi V1, COC, 6x FHT, 1x S300TH, 2x DS18B20, 1x KS300
1x Arduino Nano mit Firmata, 2x DS2423old, 4x DS18B20, HIH5030, verschiedene Ein/Ausgangsschaltungen am Arduino
Mysensors-Seriell Gateway, Si7021, BH1750, Relais

Achim

Hallo Jens,

vielen Dank für den Hinweis für die Firmata Konfiguration. Aber ich kenne sie bereits. Ich habe mich damals sehr intensiv mit dem Firmata Sketch beschäftigt. Hat eine Zeit gedauert bis der Arduino ohne Abstürze "dauerlauffähig" war. Je mehr freier Speicher, je stabiler das Teil.

Viele Grüße
Achim
1x RPi V1, COC, 6x FHT, 1x S300TH, 2x DS18B20, 1x KS300
1x Arduino Nano mit Firmata, 2x DS2423old, 4x DS18B20, HIH5030, verschiedene Ein/Ausgangsschaltungen am Arduino
Mysensors-Seriell Gateway, Si7021, BH1750, Relais

jensb

#36
@Achim
Danke für die Rückmeldung. Werde nachher die überarbeitete FRM-Version einchecken, damit sie ab morgen per FHEM-Update zur Verfügung steht.

Die von dir erwähnten Internals hast du vorher nicht gesehen, da ja auch in der "alten" Version des FRM-Moduls ein Fehler aufgetreten ist, der die Verarbeitung der Capability-Abfragen des Firmata-Devices verhindert hat. Die neue Version verarbeitet die Antworten der Capability-Abfragen nun trotz des Fehlers. Die Fehlermeldung an sich ist nicht vermeidbar, da das FRM-Modul die Abfragen durchführen muss, um zu erfahren, was das Firmata-Device kann. Dein Firmata-Device antwortet auf eine der Capability-Abfragen mit "Unhandled sysex command" und will damit sagen, dass es diese eine Anfrage nicht unterstützt, weil du die Verarbeitung deaktiviert hast (AnalogInputFirmata). Die Pin-Infos sagen dir, welche Pins wie genutzt werden dürfen (also z.B. als digitalen Eingang, Ausgang, etc.). Das ist in deinem Fall nicht besonders spannend, aber je nach Firmata-Hardware und -Konfiguration können zwischen den Listen schon Unterschiede bestehen. In deinem Fall siehst du z.B. dass Pin 1 nicht verwendet werden darf. Außerdem werden bei dir natürlich keine analog_pins aufgeführt. Andere Firmata-Anwender, die mit AnalogInputFirmata arbeiten, haben die Pin-Beschreibungen auch mit der "alten" Version des FRM-Moduls schon gehabt.

Der Unterschied zwischen Firmware-Version und Protokoll-Version ist der eigentliche Grund für dieses Update. Firmata ist zunächst einmal eine Kommunikationsprotokolldefinition. Auch die aktuelle Version von ConfigurableFirmata 2.10 verwendet die Firmata Protokoll-Version 2.6. Die Versionsnummer von ConfigurableFirmata ist die Firmware-Version, also ein Indikator für die Features, die in den ConfigurableFirmata-Sketchen enthalten sind. In der "alten" Version der Firmata-Treiber und des FRM-Moduls wurde zwischen den beiden Versionen nicht unterschieden und nur auf die Firmware-Version geachtet. Deshalb hat ConfigurableFirmata ab Version 2.7 nicht ohne Anpassungen mit FHEM funktioniert (siehe 1. Post dieses Threads).

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 Jens,

gute Arbeit! Habe soeben die aktuelle Version installiert und FRM läuft weiterhin einwandfrei.
Vielen Dank nochmals, dass du dich der Module angenommen hast.

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

@dirigent
Freut mich sehr, dass es bei dir klappt :)

Ganz fertig bin ich aber noch nicht. Es wird eine weitere Runde geben, bestehend aus Firmata-Treiber, FRM und FRM_IN. Wie ich vor ein paar Tagen bemerkt habe, verwenden die aktuellen Versionen in FHEM eine seit Protokoll-Version 2.5 angekündigte Methode, um die Pullups bei digitalen Eingängen ein- und auszuschalten. Damit das nicht demnächst Ärger macht, bereite ich ein weiteres Update vor. Das Update ist abwärtskompatibel, d.h. wenn ein Firmata-Device die neuen Methoden nicht beherrscht, werden weiter die alten Methoden verwendet.

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

Maista

Hallo Jens

Habe heute morgen blind ein update gemacht. FHEM bootet nicht mehr.
Weiß nicht wann ich Zeit finde zum nachschauen.

Müssen Änderungen an den Einstellungen gemacht werden das es funktioniert
oder hätte FHEM ohne Probleme starten müssen?

Hab ein Arduino Mega via USB am RPI angeschlossen.
Benutzt werden 7 One-Wire Ports.

Wenn ich dazu komme schau ich mir die Logs an .

Gruß Gerd

jensb

Hallo Gerd,

Änderungen an der Konfiguration sind für das Update nicht erforderlich. Wenn du OneWire verwendest, solltest du auf jeden Fall zusätzlich den schon erwähnten Patch für 11_OWX_FRM.pm herunterladen und zusätzlich einspielen. OneWire verursacht in der aktuellen Version einen Absturz, wenn Firmata Plausibilitätsfehler meldet, da es die Fehlermeldung ignoriert.

Bitte poste deine Logs und nimm bis auf weiteres die vorherige 10_FRM.pm aus dem Backup-Verzeichnis.

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

Guten Morgen Jens,

mit der neuen 10_FRM.pm funktioniert die asyncrone Abfrage meines 18b20 nicht. Syncron funktioniert es. Hier die verbose5-Ausgabe:2018.01.06 08:37:44 3: FRMa querying Firmata versions
2018.01.06 08:37:46 3: FRMa Firmata Firmware Version: Mega206.ino V_2_10 (using Protocol Version: V_2_06)
2018.01.06 08:38:41 1: OWX_Init called for bus OWXa with interface state Initialized, now going for detect
2018.01.06 08:38:41 1: OWX: 1-Wire bus OWXa: interface Firmata detected in FRMa
2018.01.06 08:38:46 3: OWTHERM:  Device OWX_28_3EC1DA050000 defined.
2018.01.06 08:38:46 1: OWX_Discover: 1-Wire devices found on bus OWXa (OWX_28_3EC1DA050000)
2018.01.06 08:38:46 1: OWX_Discover: 1-Wire devices found on bus OWXa (OWX_28_3EC1DA050000)
2018.01.06 08:38:46 1: OWX_Discover: 1-Wire devices found on bus OWXa (OWX_28_3EC1DA050000)
2018.01.06 08:42:28 4: OWX_Qomplex: Added dev 283EC1DA05000020 to queue OWXa context=convert
2018.01.06 08:42:28 1:    queue OWXa contains 1 entries after insertion
2018.01.06 08:42:28 1:     => 283EC1DA05000020 context convert expecting 1 bytes, waiting
2018.01.06 08:42:28 1: ----------------------------------------------
2018.01.06 08:42:28 1: OWX_Qomplex: Added dev 283EC1DA05000020 to queue OWXa numread=19
2018.01.06 08:42:28 1:    queue OWXa contains 2 entries after insertion
2018.01.06 08:42:28 1:     => 283EC1DA05000020 context convert expecting 1 bytes, waiting
2018.01.06 08:42:28 1:     => 283EC1DA05000020 context readsp expecting 19 bytes, waiting
2018.01.06 08:42:28 1: ----------------------------------------------


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 Jens,

hier scheint das Firmata-Device nicht zu antworten. Bitte mache den Test noch einmal mit verbose=5 für OWX+FRM, damit man die Firmata-Telegramme sieht.

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

jensb

@Achim
Hast du auf deinem Firmata-Device AnalogInputFirmate deaktiviert?

@dirigent
Hat die asynchrone Abfrage mit dem "alten" FRM-Modul funktioniert?

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

Maista

@Jensb
Hallo Jens. Gerade ein paar Minuten Zeit gefunden.
Nach dem ich das so umkopiert habe wie du das beschrieben hast, bootet FHEM wieder.
Danke.

Als Meldung stand im Log:
ZitatUndefined subroutine &main::ReadingsSingleUpdate called at ./FHEM/10_FRM.pm line 1055

Eventl. habe ich morgen mehr Musse das genauer zu untersuchen. Falls es noch nötig ist.

Soweit scheint es erst mal zu gehen.

Gruss Gerd