[gelöst] bekomme mit OWX via Firmata keine Temp-Sensoren erkannt

Begonnen von rob, 02 April 2018, 19:50:53

Vorheriges Thema - Nächstes Thema

rob

Hallo zusammen.

Ich hoffe ich bin mit meiner Frage als Anfänger nicht komplett falsch hier  ;) Kurz: ich bekomme OWX nicht ans Laufen.

Was will ich erreichen?
Im Forum z. DoorPi bin ich auf einen Hinweis von pah gestoßen, dass Timings mit iButtons kritisch sein können und deshalb ein Arduino Micro zum Einsatz kommen kann, welcher 250ms Intervalle schaffe (https://www.doorpi.org/forum/thread/405-ibuttons/).
Deshalb möchte ich mit meinem ArduinoNano-Clone (CH430) einen solchen Busmaster realisieren (unabhängig von meinem Denkovi). Daran sollen die iButtons erkannt werden. Einbinden via OWX-FRM-Modulkombi.

Was habe ich bisher gemacht?
Arduino mit config. Firmata geflasht. Update + Shutdown Restart v. fhem.
Device Firmata definiert:
define myFirmata FRM /dev/serial/by-path/platform-3f980000.usb-usb-0:1.4:1.0-port0@57600

Test-LED angeschlossen an Pin#7 und Device definiert + Test:
define LED_Pin7 FRM_OUT 7
set LED_Pin7 blink 3 3

Led blinkt wie sie soll. Auf zum nächsten Schritt...

Zum Test DS18S20 an Pin#8 angeschlossen und OWX definiert:
define owXBusmaster OWX myFirmata:8

Was klappt nicht?
Es wird kein 1-Wire Device erkannt: OWX_Discover: 1-Wire devices found on bus owXBusmaster ()

Folgende Beobachtungen:
Nach Anlegen des OWX bleibt state auf ??, bis ich set MyFirmata reinit ausführe - erst danach steht owXBusmaster auf Initialized.
owXBusmaster ist nicht BUSY, sobald ich aber get owXBusmaster devices ausführe, bleibt BUSY=1 stehen (bis shutdown restart).

Ein attr owXBusmaster verbose 5 macht für mich das LOG diesbzgl. wenig erhellender.

2018.04.02 19:25:25 5: owXBusmaster FRM_Client_AssignIOPort before IODev myFirmata -> myFirmata
2018.04.02 19:25:25 5: owXBusmaster FRM_Client_AssignIOPort after IODev myFirmata
2018.04.02 19:25:25 5: owXBusmaster initialized pin 8 of myFirmata
2018.04.02 19:25:51 1: OWX_Discover: 1-Wire devices found on bus owXBusmaster ()
2018.04.02 19:26:07 1: OWX_Init called for bus owXBusmaster with interface state Initialized, now going for detect
2018.04.02 19:26:07 1: OWX: 1-Wire bus owXBusmaster: interface Firmata detected in myFirmata
2018.04.02 19:26:10 1: OWX_Discover: 1-Wire devices found on bus owXBusmaster ()


Firmata sagt:
firmware_version - 2.10
protocol_version - 2.06
onewire_pins - 2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19

Für mich sieht die Cinfig für beide Devices OK aus. Weil es aber nicht klappen will, muss ich irgendwas falsch gemacht haben. Aber was?

Könnte mir bitte jmd. auf die Sprünge helfen?

Vielen Dank und beste Grüße
rob

Prof. Dr. Peter Henning

Ich tippe auf einen Fehler beim Anschluss der 1-Wire Devices am Arduino. Denn der Busmaster wird gefunden.

LG

pah

rob

#2
Vielen Dank für den Denkanstoß. :D  Dann war mein Eindruck, die Config könnte stimmen, nicht ganz falsch.

Ich hatte den DS18S20 direkt angeschlossen und nun Tante Google bemüht: anscheinend wird oft ein 4.7K Widerstand von 5+ nach DQ zwischengeschaltet. Habe ich jetzt auch und siehe da: OWX hats sofort erkannt.

Im Log erscheinen noch Fehlermeldungen á la

2018.04.03 11:40:46 1: OWX_Discover: 1-Wire devices found on bus owXBusmaster (OWX_28_FF9A8DB31603)
2018.04.03 11:41:04 1: OWX_FRM::Complex receiving outside loop (0 bytes received) 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x44
2018.04.03 11:41:08 1: OWX_FRM::Complex receiving outside loop (0 bytes received) 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0xbe
2018.04.03 11:41:08 1: OWTHERM: OWX_28_FF9A8DB31603 has returned invalid data of length 10
2018.04.03 11:41:08 1: OWXTHERM_BinValues:  OWX_28_FF9A8DB31603: invalid data length, 0 instead of 9 bytes,  0 
2018.04.03 11:41:39 3: DS18B20_FF9A8DB31603: reading temperature did not return a value


Aber das ist ein anderes Thema, denn mein eigentliches Problem ist ja gelöst - die Temp-Sensoren werden nun erkannt.

Vielen Dank und beste Grüße
rob



PS: Nachtrag, um obige LOG-Einträge nicht ganz hier schweben zu lassen:
Beim Fehlersuchen hatte ich die ConfigurableFirmata im Urzustand belassen, um Fehler beim Auskommentieren auszuschließen.
Jetzt habe ich fleißig auskommentiert und neu geflasht, sodass der Ardu stabil laufen sollte - Temperaturen werden nun angezeigt und ich setze OWX nun auf verbose=0. Für mich passt es damit.  8)