Firmata Update für Firmware-Versionen ab 2.7

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

Vorheriges Thema - Nächstes Thema

jensb

Hallo Stephan,

da ich nicht weiß, welche Anwender bereits mit welchen States arbeiten, möchte ich die bisherigen States möglichst nicht ändern. Das geht sowieso nicht ohne weiteres. Ein Teil der States kommt vom FRM-Modul, z.B. "Initialized", aber aus 2 völlig verschiedenen Abläufen heraus, nämlich einmal nach dem logischen Verbindungsaufbau zum Firmata-Device und jedes mal, wenn ein OneWire Device initialisiert wird (für mich unlogisch). Der State "opened" wiederum kommt aus dem DevIO-Modul, z.B. nach dem erfolgreichen Öffnen der seriellen Schnittstelle. Der Ablauf "opened" -> "Initialized" ist bei USB-Verbindungen also "normal" und bedeutet "verbunden + initialisiert".

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

abc2006

Alles klar, nehm ich zur Kenntnis, find ich aber trotzdem noch verwirrend:)

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

Maista

#62
@jensb
Hallo Jens,

danke für die Info. Ich habe nun doch noch weiter probiert. Und nach dem ich meine Defines den aktuellen Vorgaben angepasst habe, findet er nun alle OW-Device wieder!

Für alle die vor dem gleichen Problem stehen hier meine alten Defines:

#### definiere FRM als IO-Device
define FIRMATA FRM /dev/ttyACM0@57600
attr FIRMATA icon DIN_rail_firmata
attr FIRMATA room OWX,System

#### OW-Ports laden
#Port 2 fuer interne messungen
define OWio2 OWX 2
attr OWio2 IODev FIRMATA
attr OWio2 comment Sensor am Arduino-Mega
attr OWio2 room OWX,System

#Port 3 (ACHTUNG!! PORT4 geht nicht wenn LAN/SD-Card benutzt wird!)
define OWio3 OWX 3
attr OWio3 IODev FIRMATA
attr OWio3 comment Aussen Norden-Temperatur, Feuchte
attr OWio3 room OWX,System


Neu sieht das nun so aus:

#### definiere FRM als IO-Device
define FIRMATA FRM /dev/ttyACM0@57600
attr FIRMATA icon DIN_rail_firmata
attr FIRMATA room OWX,System

#### OW-Ports laden
#Port 2 fuer interne messungen
define OWio2 OWX FIRMATA:2
attr OWio2 comment Sensor am Arduino-Mega
attr OWio2 room OWX,System

#Port 3 (ACHTUNG!! PORT4 geht nicht wenn LAN/SD-Card benutzt wird!)
define OWio3 OWX FIRMATA:3
attr OWio3 comment Aussen Norden-Temperatur, Feuchte
attr OWio3 room OWX,System


Jens, zwei fragen habe ich noch

Wenn ich "set OWio2 reopen" setze bleibt der Kanal "disconnected". Er zeigt mir den DS18B20 noch als Device an. Ansprechen klappt aber nicht mehr. Erst nach einem Shutdown ist das OWio2 wieder im Internals "STATE" als "Initialized" markiert.

Das Readings "state" bleibt aber weiter auf "disconnected"

OWTHERM: Could not get values from device TA_28_736020050000, return was OWTHERM: TA_28_736020050000 not accessible
2018.01.07 14:15:14 1 : OWX_FRM::Ready function called for bus OWio2. STATE=disconnected
2018.01.07 14:16:14 1 : OWX_FRM::Ready function called for bus OWio2. STATE=disconnected
2018.01.07 14:17:00 1 : ====> REOPENING DEVICE
2018.01.07 14:17:00 3 : OWX_Set OWio2 reopen => 0
2018-01-07 14:17:00 OWX OWio2 reopen
2018.01.07 14:17:11 5 : FIRMATA FRM:>f0734002f7
2018.01.07 14:17:11 5 : SW: f0734002f7
2018.01.07 14:17:11 5 : FIRMATA FRM:<f0734202
2018.01.07 14:17:11 5 : FIRMATA FRM:<2866010352
2018.01.07 14:17:11 5 : FIRMATA FRM:<0000000b01f7
2018.01.07 14:17:11 1 : OWX_Discover: 1-Wire devices found on bus OWio2 (TA_28_736020050000)
2018.01.07 14:17:16 1 : OWX_FRM::Ready function called for bus OWio2. STATE=disconnected
2018.01.07 14:17:20 5 : FIRMATA FRM:>f0730102f7
2018.01.07 14:17:20 5 : SW: f0730102f7
2018.01.07 14:17:20 1 : OWX_Complex called while interface OWio2 disconnected


Zweite frage, in wie weit ist die Version der Firmata im Arduino von belang?
Kann ich meine alte 2.06 vorerst laufen lassen?

Danke für deine Arbeit. Somit hat Firmata wieder eine Zukunft  ;D

Schönen Sonntag.

Gruss,
Gerd


jensb

Hallo Gerd,

danke für die Rückmeldung.

Zitat
Wenn ich "set OWio2 reopen" setze bleibt der Kanal "disconnected". Er zeigt mir den DS18B20 noch als Device an. Ansprechen klappt aber nicht mehr. Erst nach einem Shutdown ist das OWio2 wieder im Internals "STATE" als "Initialized" markiert.
Das Readings "state" bleibt aber weiter auf "disconnected"
Ich würde gerne helfen, aber ich habe bei mir kein OneWire an Firmata und der OneWire-Code wird von @pahenning betreut. Das gepatchte Modul 11_OWX_FRM.pm ist ein Hotifx um FHEM-Abstürze zu vermeiden. Du kannst es auch noch mal mit der unveränderten 11_OWX_FRM.pm versuchen und prüfen, ob es einen Unterschied macht. Bitte ansonsten im 1-Wire-Bereich nachsehen und ggf. da einen eigenen Thread aufmachen.

Zitat... in wie weit ist die Version der Firmata im Arduino von belang?
Kann ich meine alte 2.06 vorerst laufen lassen?
Die aktuellen FHEM-Updates für Firmata sind bzgl. der Firmata-Devices abwärtskompatibel - an den Arduinos muss nichts geändert werden.

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

Hallo Stephan,

hier noch etwas mehr im Sinne von "verwirrend", nämlich die Liste aller möglichen States des FRM-Moduls:




SubAufruferState

DevIo_Expect
FRM (USB)failed

DevIo_Expect
FRM (USB)opened

DevIo_OpenDev
FRM (USB)opened

DevIo_OpenDev
FRM (USB)disconnected

DevIo_Disconnected
FRM (USB)disconnected

FRM_Start
FRM (TCP)listening

FRM_Tcp_Connection_Close
FRM (TCP)listening

FRM_SetupDevice
FRM-ClientInitialized

FRM_Init_Pin_Client
FRM-Clienterror initializing: pin X

FRM_Client_Define
FRM-Clientdefined

FRM_Client_Unassign
FRM-Clientdefined

FRM_OWX_Init
FRM-Client OWXInitialized
FRM_i2c_update_deviceI2C-Receiveactive

Die DevIo-Einflüsse können als FRM-intern betrachtet werden. Ansonsten ist der State des FRM-Moduls stark fremdbestimmt. "FRM-Client" sind alle FHEM-Module, die sich beim FRM-Modul anmelden (also z.B. 11_OWX_FRM, FRM_IN, ...).  Meiner Meinung nach sollten Aktivitäten anderer Module nicht in dieser Weise den State eines Moduls beeinflussen - aber wie gesagt - Abwärtskompatibilität hat Vorrang.

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

abc2006

Hi,
kannst du einen *richtigen* Status in einem Reading bereitstellen? dann kann ich mir das mit StateFormat ändern ...
Wenns liefe, wahrscheinlich nicht mehr so wichtig:

Allerdings hab ich grade den Arduino abgezogen, und FRM liefert mir "opened"... sicher??

Habe dann festgestellt, dass die beide auf das gleiche Device (dev/ttyUSB0) zugreifen wollen.. aber bevor ich was tun konnte, war FHEM weg (abgestürzt):

Zitat2018.01.08 13:03:35 5: Arduino setup stage 1
2018.01.08 13:03:35 5: Arduino setup stage 1
2018.01.08 13:03:36 5: Arduino setup stage 1
2018.01.08 13:03:37 5: Arduino setup stage 1
2018.01.08 13:03:37 5: Arduino setup stage 5
2018.01.08 13:03:37 3: Arduino no response from Firmata, closing DevIo
2018.01.08 13:03:37 5: Arduino setup stage 4
2018.01.08 13:03:38 5: Cmd: >save<
2018.01.08 13:03:38 5: Starting notify loop for global, 1 event(s), first is SAVE
2018.01.08 13:03:38 5: End notify loop for global
2018.01.08 13:03:39 1: OWX_Init called for bus OWio3 with interface state opened, now going for detect
2018.01.08 13:03:39 1: OWX_SER::Query OWio3: Sending out0xc1
2018.01.08 13:03:39 5: SW: c1
2018.01.08 13:03:39 4: OWX_SER::Query OWio3: 1 of 1 bytes in first attempt and state opened
2018.01.08 13:03:39 1: OWX_SER::Query OWio3: Sending out0x17 0x45 0x5b 0x0f 0x91
2018.01.08 13:03:39 5: SW: 17455b0f91
2018.01.08 13:03:39 4: OWX_SER::Query OWio3: 5 of 5 bytes in first attempt and state opened
2018.01.08 13:03:39 1: OWX_SER::Detect 1-Wire bus OWio3: interface not found, answer was 0x17 0x41 0xab 0x20 0xfc
2018.01.08 13:03:39 1: OWX_SER::Query OWio3: Sending out0x17 0x45 0x5b 0x0f 0x91
2018.01.08 13:03:39 5: SW: 17455b0f91
2018.01.08 13:03:39 4: OWX_SER::Query OWio3: 5 of 5 bytes in first attempt and state opened
2018.01.08 13:03:39 1: OWX_SER::Detect 1-Wire bus OWio3: interface not found, answer was 0x17 0x41 0xab 0x20 0xfc
2018.01.08 13:03:39 1: OWX_SER::Query OWio3: Sending out0x17 0x45 0x5b 0x0f 0x91
2018.01.08 13:03:39 5: SW: 17455b0f91
2018.01.08 13:03:39 4: OWX_SER::Query OWio3: 5 of 5 bytes in first attempt and state opened
2018.01.08 13:03:39 1: OWX_SER::Detect 1-Wire bus OWio3: interface not found, answer was 0x17 0x41 0xab 0x20 0xfc
2018.01.08 13:03:39 1: OWX_SER::Query OWio3: Sending out0x17 0x45 0x5b 0x0f 0x91
2018.01.08 13:03:39 5: SW: 17455b0f91
2018.01.08 13:03:39 4: OWX_SER::Query OWio3: 5 of 5 bytes in first attempt and state opened
2018.01.08 13:03:39 1: OWX_SER::Detect 1-Wire bus OWio3: interface not found, answer was 0x17 0x41 0xab 0x20 0xfc
2018.01.08 13:03:39 1: OWX_SER::Detect 1-Wire bus OWio3: interface not detected, answer was 0x17 0x41 0xab 0x20 0xfc
2018.01.08 13:03:39 4: OWX_Init: Detection failed
2018.01.08 13:03:39 1: Cannot init /dev/ttyUSB0, ignoring it (OWio3)
2018.01.08 13:03:42 5: Cmd: >{ReadingsVal("OWio3","reopen","")}<
2018.01.08 13:03:42 5: Cmd: >{AttrVal("OWio3","room","")}<
2018.01.08 13:03:46 5: Cmd: >get OWio3 devices<
2018.01.08 13:03:46 1: OWX_SER::Query OWio3: Sending out0xe3 0xc5
2018.01.08 13:03:46 5: SW: e3c5
OWio3, Arduino is not connected at ./FHEM/10_FRM.pm line 822.


FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

jensb

@abc2006

Zitat... kannst du einen *richtigen* Status in einem Reading bereitstellen?
Meinst du damit einen "reinen" Status der Verbindung zum Firmata-Device? Wäre wünschenswert, aber das ist nicht mal eben und es geht wahrscheinlich auch ohne Änderung:

ZitatAllerdings hab ich grade den Arduino abgezogen, und FRM liefert mir "opened"... sicher??
Auf den ersten Blick nicht, aber wenn ich mir den Logauszug ansehe, müsste folgendes mit deinem State passiert sein: 1. opened (USB-connect), 2. disconnected (Arduino no response from Firmata, closing DevIo). Macht der Arduino einen Reset, dann kommt als nächstes wieder "opened". "opened" bedeutet nur, dass eine Verbindung zwischen FHEM und dem USB-Device exisitert und hat nichts mit der Verbindung zum Firmata-Device zu tun. Was fehlt ist State "Initialized" bzw. Setup Stage 3. Dein Arduino scheint sich gar nicht zu melden (keine Version empfangen, es fehlt Setup Stage 2) und Setup Stage 1 wird mehrere Sekunden lang wiederholt, bis zum Timeout. Wenn du ein Log für das State-Reading des FRM-Device anlegst, kannst du das wahrscheinlich besser nachvollziehen. Warum sich dein Firmata-Device nicht meldet, kann man so nicht feststellen. Häng es mit USB an die Arduino IDE und schau dir nach dem Reset an, was der Serielle Monitor ausgibt. Normal wäre 1. Protokoll-Version 2. Firmware-Version, beides wird vom Firmata-Device nach dem Reset unaufgefordert gesendet.

ZitatOWio3, Arduino is not connected at ./FHEM/10_FRM.pm line 822
Ein Absturz an dieser Stelle ist für mich nicht nachvollziehbar. OWX ruft FRM nicht mehr direkt auf und die von mir gepatchte 11_OWX_FRM.pm sichert den Aufruf von FRM_Client_FirmataDevice ab, der in Zeile 822 steht und den Absturz verursacht hat. Verwendest du vielleicht das alte OWX? Wenn ja, dann sieh dir bitte diesen und diesen Post an.

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

abc2006

Zitat@abc2006
Meinst du damit einen "reinen" Status der Verbindung zum Firmata-Device? Wäre wünschenswert, aber das ist nicht mal eben und es geht wahrscheinlich auch ohne Änderung:

Okay, ich hatte eine grobe Tabelle, wollte aber keinen so engen Rahmen vorgeben/fordern. Hier dann nochmal:
Reading FRM_USB Inhalt: failed|opened|disconnected
Reading FRM_TCP inhalt: failed|connected|disconnected|timeout
Reading FRM-Client: initialized|error|defined|failed
Reading Connected OWX OWio1|OWio2,OWio3
Reading Connected FRM_AD Analogpin1|Analogpin2 usw
oder so ähnlich.

ZitatNormal wäre 1. Protokoll-Version 2. Firmware-Version, beides wird vom Firmata-Device nach dem Reset unaufgefordert gesendet.

Serieller Monitor:
siehe Bild. Kann ich daraus schon schließen, dass da was nicht stimmt?

ZitatVerwendest du vielleicht das alte OWX? Wenn ja, dann sieh dir bitte
Meinst du das 11_OWX_FRM?

Nein, habe die 11_OWX_FRM.pm heruntergeladen. Allerdings muss ich zugeben, dass da evtl ein Fehler passiert sein könnte. Ich muss zugeben, dass ich in diesem ganzen Versions_wirrwar mehr als einmal den überblick verloren habe (falls ich ihn jemals hatte). Wäre es möglich, dem FRM.pm eine Versionsnummer zu geben (so wie z.B. OWX)?

define OWio2 OWX FIRMATA:2

So sieht meine Definition aus, seit ich angefangen habe, mit Firmata herumzuprobieren.

FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

jensb

@abc2006

Dein Vorschlag für die States ist plausibel, aber im Detail leider so nicht umsetzbar. Werde es trotzdem auf die langfristige ToDo-Liste setzten.

Der Output auf dem Seriellen Monitor sieht gut aus. Mit ein bisschen Fantasie kannst du deinen Firmata-Projektnamen lesen. Da kommen also Daten. Vermutlich hat dein Konfigurationsproblem mit der doppelten Schnittstellenzuweisung dafür gesorgt, dass die Daten nicht beim FRM-Device ankommen. Also Konfiguration anpassen und nochmal versuchen. Solange das Grundlegende nicht funktioniert, solltest du deine Konfiguration nach Möglichkeit erst einmal abspecken. Legt doch einfach noch ein FRM-Device an und setzt solange beim vorhandenen die Schnittstelle auf "none". Geht alles gut, zeigt dein neues FRM-Device anschließend STATE=Initialized.

Bzgl. OWX ist wichtig, dass alles aus einem Guss ist. Es reicht nicht, nur die 11_OWX_FRM.pm herunterzuladen. Fast jedes FHEM Modul hat bereits eine Versionsnummer. Tippe mal "version" in dein FHEM ein und sieh dir die Spalte "Rev" an. Da müsste u.a. stehen:

  • 00_OWX.pm          15392
  • 11_OWX_FRM.pm  15392
  • 10_FRM.pm            15794
Wenn die Revs bei dir kleiner sind, dann mache zuerst ein FHEM-Update und nimm anschließend die gepatchte 11_OWX_FRM.pm.

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

@abc2006
Auf der offiziellen Firmata Homepage gibt's Testsoftware für Firmata.
Die war glaub Ich in Java geschrieben und ist mit einer GUI. Via USB am PC
Kann man damit unabhängig von FHEM testen.
Damit können die IO-PORTS gesetzt oder eingelesen werden.
In den Anfängen habe ich damit getestet ob das überhaupt funktioniert.

@jensb
Funktioniert immer noch alles!
13 OWX Devices an 5 Pins. Zum Teil Original DS oder Nachbauten von TM3D.

Gruss
Gerd

abc2006

Hi,


00_OWX.pm         15392 2017-11-05 06:46:46Z phenning
11_OWX_FRM.pm     15392 2017-11-05 06:46:46Z phenning
10_FRM.pm         15794 2018-01-05 19:14:58Z jensb




-rw-r--r-- 1 root root 17721 Jan  9 00:29 /root/11_OWX_FRM.pm
-rw-r--r-- 1 fhem dialout 17721 Jan  7 12:36 /opt/fhem/FHEM/11_OWX_FRM.pm
root@hzfhem:~# diff /root/11_OWX_FRM.pm /opt/fhem/FHEM/11_OWX_FRM.pm
root@hzfhem:~#

scheinen gleich zu sein, also alles so wie es sein soll. oder?

Dann kommts jetzt auf die Firmata-Versionen an.
Ich habe keine Ahnung, wie ich die auseinanderhalte. Also probier ich es anhand der Datei
arduino-1.8.5/libraries/ConfigurableFirmataXXX/src/ConfigurableFirmata.h

Dort steht drin:

Bei der Version, die ich nach https://forum.fhem.de/index.php/topic,44525.msg380238.html#msg380238 aus dem Github geholt hab, vor .. November '15? als 2.06:

FIRMATA_MAJOR_VERSION 2
FIRMATA_MINOR_VERSION 7
FIRMATA_BUGFIX_VERSION 0

in der aktuellen (2.10) steht drin :
FIRMATA_PROTOCOL_MAJOR_VERSION  2
FIRMATA_PROTOCOL_MINOR_VERSION  6
FIRMATA_PROTOCOL_BUGFIX_VERSION  0

FIRMATA_FIRMWARE_MAJOR_VERSION  2
FIRMATA_FIRMWARE_MINOR_VERSION  10
FIRMATA_FIRMWARE_BUGFIX_VERSION  0
Bin ich da richtig mit der Übereinstimmung, dass die 2.06 die alt-kompatible ist?

Dann kommt da jetzt der WIKI-Artikel ins Spiel.
der sagt:
ZitatDie aktuelle Arduino-IDE bringt zwar schon eine Version der StandardFirmata mit, diese enthält aber noch keine Unterstützung für OneWire. Diese findet man im eigenen Fork. Den kompletten Branch kann man sich auch bequem als zip-Archiv herunterladen

so. Der "eigene Fork" ist der link auf Version 2.10. also falsch. in der Zip-Datei ist auch die 2.10 drin.
Dann kommt der nächste Abschnitt:
Zitatie in dem Verzeichnis befindlichen Dateien 'Firmata.h', 'Firmata.cpp' und 'Boards.h' müssen durch die im arduino-configurable.zip-file enthaltenen Versionen ersetzt werden. Am besten kopiert man einfach den gesamten Inhalt des Ordners 'arduino-configurable' in das 'libraries/Firmata'-Verzeichnis (mitsamt des Unterordners 'examples').

So. Woher bekomm ich jetzt die arduino-configurable.zip? Ich hab im Download-Verzeichnis eine heruntergeladen, und zwar von
https://codeload.github.com/firmata/arduino/zip/configurable

Weiss aber nicht mehr, woher ich diesen Link hatte.
Und die soll ich jetzt über die Dateien des Firmata 2.06 drüberkopieren. Aber ist das bei 2.10 auch notwendig?
An der Stelle bin ich ein bisschen am Ende meines Lateins.
Aber halt, da sind ja dann auch noch die Dateien, die bei FHEM mit ausgeliefert werden:
/opt/fhem/FHEM/lib/Device/Firmata/Base.pm
/opt/fhem/FHEM/lib/Device/Firmata/Changes
/opt/fhem/FHEM/lib/Device/Firmata/Constants.pm
/opt/fhem/FHEM/lib/Device/Firmata/Error.pm
/opt/fhem/FHEM/lib/Device/Firmata/Language.pm
/opt/fhem/FHEM/lib/Device/Firmata/license.txt
/opt/fhem/FHEM/lib/Device/Firmata/Platform.pm
/opt/fhem/FHEM/lib/Device/Firmata/Protocol.pm
/opt/fhem/FHEM/lib/Device/Firmata/README


Sind die zu *allen* Firmata-Versionen kompatibel?
Das sind doch die Dateien, an denen du nichts ändern wolltest, weil die von Firmata mit entwickelt werden, oder?



So, BTT: ich hab jetzt laufen: FHEM wie oben beschrieben, plus einen Arduino mit Firmata 2.06, ausgecheckt wie oben im Post beschrieben. Puh, ob ich da jetzt was drüberkopiert hab ... gute Frage..
diff sagt: ich habs *nicht* drüberkopiert.

FHEM sagt dann folgendes:

list OWio3:

Internals:
   ALARMED    0
   ASYNCHRONOUS 0
   DEF        Arduino:9
   DeviceName Arduino:9
   FRM_OWX_CORRELATIONID 0
   HWDEVICE   Arduino
   INITDONE   0
   INTERFACE  firmata
   IODev      Arduino
   NAME       OWio3
   NEXT_OPEN  1515454515
   NR         22
   PARTIAL   
   PIN        9
   PRESENT    1
   ROM_ID     FF
   STATE      disconnected
   TYPE       OWX
   interval   300
   timeout    2
   version    7.05
   DEVHASH:
     OWX_1D_22DC84000003 1D.22DC84000003.51
     OWX_1D_23DC84000003 1D.23DC84000003.66
     OWio3      Busmaster
   DEVS:
     1D.22DC84000003.51
     1D.23DC84000003.66
   FRM_OWX_REPLIES:
   READINGS:
     2018-01-09 00:34:15   state           disconnected
Attributes:
   verbose    5


get OWio3 devices
OWX_Discover: 1-Wire devices found on bus OWio3
1D.22DC84000003      DS2423         OWX_1D_22DC84000003
1D.23DC84000003      DS2423         OWX_1D_23DC84000003


Internals:
   ASYNC      0
   DEF        DS2423 22DC84000003
   ERRCOUNT   0
   INTERVAL   15
   IODev      OWio3
   NAME       OWX_1D_22DC84000003
   NOTIFYDEV  global
   NR         23
   NTFY_ORDER 50-OWX_1D_22DC84000003
   OW_FAMILY  1D
   OW_ID      22DC84000003
   PRESENT    0
   ROM_ID     1D.22DC84000003.51
   STATE      initialized 2018-01-09 00:33:48
   TYPE       OWCOUNT
   DATA:
     memory     
   READINGS:
     2018-01-09 00:33:02   A               978501
     2018-01-09 00:33:02   A_rate          0
     2018-01-09 00:33:02   B               0
     2018-01-09 00:33:02   B_rate          0
     2018-01-09 00:33:02   memory         
     2018-01-09 00:33:48   state           initialized
   owg_midnight:
     
     
   owg_str:
     
     
   owg_val:
     
     
Attributes:
   IODev      OWio3
   interval   15
   model      DS2423
   room       OWX
   stateFormat {sprintf("%s %s",ReadingsVal($name,"state",0),ReadingsTimestamp($name,"state",0))}

Allerdings sagt ein
get  OWX_1D_22DC84000003  counters
immer noch
OWCOUNT: get OWX_1D_22DC84000003 counters failed, reason: OWCOUNT: Could not get values from device OWX_1D_22DC84000003, reason: 1D.22DC84000003.51 not accessible in reading page 14OWCOUNT: Could not get values from device OWX_1D_22DC84000003, reason: 1D.22DC84000003.51 not accessible in reading page 15


Wenn du mir bestätigst, dass (die aktuelle oder irgend eine andere Konfiguration die *empfohlene* ist, dann setze ich das gerne so um, dokumentiere das im Wiki und wenn der Fehler dann noch besteht, ist es ein OWX/OneWire-Problem?

Ich löte morgen mal den zweiten Counter, nur um sicherzugehen, dass ich den nicht aus versehen irgendwie zerschossen hab. Wenn das was ändern sollte, meld ich mich asap. (ist übrigens auch ein Nachbau vom Tobias)

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

abc2006

Also der DS18B20 liefert (bei bisher gleichem Setup) ebenfalls einen Fehler:

OWTHERM: Could not get values from device OWX_28_16C19F050000, return was OWTHERM: OWX_28_16C19F050000 not accessible
Firmata 2.06


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

abc2006

Kannst du mir mal Hilfe zur Selbsthilfe geben?


2018.01.09 10:45:44 5: Arduino FRM:<e01902
2018.01.09 10:45:45 5: Arduino FRM:<e01902
2018.01.09 10:45:46 5: Arduino FRM:<e01902
2018.01.09 10:45:47 5: Arduino FRM:<e01a02
2018.01.09 10:45:48 1: OWX_Complex called while interface OWio3 disconnected
2018.01.09 10:45:48 1: OWX_Complex called while interface OWio3 disconnected
2018.01.09 10:45:48 1: OWX_Complex called while interface OWio3 disconnected
2018.01.09 10:45:48 1: OWX_Complex called while interface OWio3 disconnected
2018.01.09 10:45:48 5: Arduino FRM:<e01a02
2018.01.09 10:45:49 5: Arduino FRM:<e01a02
2018.01.09 10:45:50 5: Arduino FRM:<e01a02
2018.01.09 10:45:51 5: Arduino FRM:<e01a02
2018.01.09 10:45:52 5: Arduino FRM:<e01b02
2018.01.09 10:45:53 5: Arduino FRM:<e01b02
2018.01.09 10:45:54 5: Arduino FRM:<e01a02
2018.01.09 10:45:55 5: Arduino FRM:<e01a02
2018.01.09 10:45:56 5: Arduino FRM:<e01b02
2018.01.09 10:45:57 5: Arduino FRM:<e01b02
2018.01.09 10:45:58 5: Arduino FRM:<e01b02
2018.01.09 10:45:59 5: Arduino FRM:<e01b02
2018.01.09 10:46:00 5: Arduino FRM:<e01b02
2018.01.09 10:46:01 5: Arduino FRM:<e01b02
2018.01.09 10:46:02 5: Arduino FRM:<e01b02
2018.01.09 10:46:03 1: OWX_Complex called while interface OWio3 disconnected
2018.01.09 10:46:03 1: OWX_Complex called while interface OWio3 disconnected
2018.01.09 10:46:03 5: Arduino FRM:<e01a02
2018.01.09 10:46:04 5: Arduino FRM:<e01a02
2018.01.09 10:46:05 5: Arduino FRM:<e01a02
2018.01.09 10:46:06 5: Arduino FRM:<e01a02
2018.01.09 10:46:07 5: Arduino FRM:<e01902
2018.01.09 10:46:08 5: Arduino FRM:<e01902
2018.01.09 10:46:09 5: Arduino FRM:<e01a02
2018.01.09 10:46:10 5: Arduino FRM:<e01a02
2018.01.09 10:46:11 5: Arduino FRM:<e01902
2018.01.09 10:46:12 5: Arduino FRM:<e01a02
2018.01.09 10:46:13 5: Arduino FRM:<e01a02
2018.01.09 10:46:14 5: Arduino FRM:<e01a02
2018.01.09 10:46:15 1: OWX_FRM::Ready function called for bus OWio3. STATE=disconnected
2018.01.09 10:46:15 5: Arduino FRM:<e01a02
2018.01.09 10:46:16 5: Arduino FRM:<e01a02
2018.01.09 10:46:17 5: Arduino FRM:<e01a02
2018.01.09 10:46:18 1: OWX_Complex called while interface OWio3 disconnected
2018.01.09 10:46:18 1: OWX_Complex called while interface OWio3 disconnected


Wie kann ich herausfinden, was das "e01a02" bedeutet?
Ich vermute, das sind die NAchrichten, die FRM an den Arduino sendet, aber keine Antwort (Prefixed mit SW>) erhält. Stimmt das?
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

Maista

Moin.
Funktioniert immer noch.
Bei Gelegenheit versuche ich Async.

Gruß
Gerd

jensb

@abc2006

ZitatKannst du mir mal Hilfe zur Selbsthilfe geben?
Würde ich gerne, aber das kann ich nicht in dem Umfang den du brauchst - ich kenne mich mit OneWire aktuell nicht gut genug aus, um Ratschläge geben zu können. Ein Teil deiner Fragen gehört klar in den OneWire-Bereich. Bezüglich Firmata (ohne OneWire) ist folgendes relevant: Mit der aktuellen Firmata-Version kannst du (fast) beliebige Firmata und ConfigurableFirmata Versionen verwenden, also auch solche mit Versionsnummern, die größer sind als 2.6 (das war bisher die Obergrenze, wenn man keine Anpassungen an FHEM oder Firmata machen wollte). Daher empfiehlt es sich nun, die aktuellste verfügbare Firmata-Version zu verwenden. Ein Teil der Wiki-Hinweise sind deshalb seit Jahrewechsel überarbeitungsbedürftig . Wenn du also OneWire einsetzten willst, dann greife momentan zu ConfigurableFirmata 2.10. Für einen schnellen Verbindungstest empfehle ich trotzdem zuerst den Sketch StandardFirmataEthernet. Die Netzwerkparameter einstellen und nach ein paar Minuten solltest du zumindest eine Verbindung mit FHEM haben (State=Initialized).

ZitatWie kann ich herausfinden, was das "e01a02" bedeutet?
Siehe hier und hier. Du empfängst (FRM:<) jede Sekunde einen analogen Messwert von Pin 0 (E0). Dein Firmata-Device reagiert also und scheinbar ist ein FRM_AD-Device für Pin 0 konfiguriert, was merkwürdig ist, da du ja OneWire machen willst. Ohne das Logging vor dem 1. "e01a02" kann man aber nicht herausfinden, woran das liegen könnte.

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