Arduino Ethernet FIRMATA 1-Wire findet ekin Device

Begonnen von jayjones, 14 April 2014, 15:07:58

Vorheriges Thema - Nächstes Thema

jayjones

Hi,

habe nen Arduino Uno mit Ethernet-Shield und Firmata configurable am laufen.
Kommunikation ist ok, Arduino ist initalisiert.
Config sieht so aus:

# definiere FRM als IO-Device über Ethernet ('global' bindet an alle IP-Addressen des Servers)
define Arduino FRM 3030 global
define 1wire OWX 3
attr 1wire IODev Arduino
attr 1wire buspower real


Über den Arduino kann ich mit einem 1-Wire Sketch die Temperatur von einem 18B20 ohne Probleme auslesen, und in der seriellen Konsole ausgeben.

Ist der definierte Pin 3 evt aus irgend einem Grund ein anderer?

Log sieht so aus:

2014.04.14 15:04:20 1: OWX: 1-Wire bus 1wire: interface Firmata detected in Arduino
2014.04.14 15:04:33 1: OWX: 1-Wire devices found on bus 1wire ()
2014.04.14 15:04:36 1: OWX: 1-Wire devices found on bus 1wire ()

ntruchsess

Vermutlich hat die ConfigurableFirmata noch nicht verbunden, dann gibt's auch keine Devices zu finden. Kann man an Deinem Logauszug aber so nicht sehen, das ist zu kurz.

Sind in der ConfigurableFirmata denn die remote_ip und der remote_port korrekt eingetragen (also die ip-addresse des fhem-servers und der Port des FRM-devices)?

Wenn das alles passt, dann könnte es auch sein, daß Du zu viele Features aktiviert hast und der Arduino mangels RAM einfach abschmiert. Mit einem original WIZ5100-basiertem Ethernetshield ist das normalerweise kein Problem, mit einem ENC28J60 shield (und UIPEthernet-library) wird es aber eng, da funktioniert auf einem Uno z.B. I2C nicht parallel zu 1-Wire (auch wenn es sich compilieren und flashen läßt).

Schlussendlich kannt Du zum testen ja auch erst mal ohne Netzwerk und über USB gehen, das FRM-device also mit 'define Arduino FRM /dev/ttyUSBxxx' anlegen um sicherzustellen, das sonst alles passt. Pin 3 ist jedenfalls ok (solange Du kein anderes Shield mit draufsteckt, das Pin 3 andersweitig benutzt).

Gruß,

Norbert
while (!asleep()) {sheep++};

jayjones

Hi Norbert,

danke für deine schnelle Antwort. Ich habe das Problem gefunden, es lag natürlich an mir. Um den Arduino nicht zu überlasten, habe ich alles was ich nicht brauche auskommentiert, natürlich auch:


//#include <utility/DigitalInputFirmata.h>
//DigitalInputFirmata digitalInput;

//#include <utility/DigitalOutputFirmata.h>
//DigitalOutputFirmata digitalOutput;


Das war natürlich dumm, da 1-Wire ja über einen digitalen Port läuft.

Sorry das ich ich nicht vorher selbst drauf gekommen bin.

marc2

Moin !

Ich versuche auch gerade das erste Mal 1w Devices über FRM anzubinden. Ich gehe mal davon aus, dass mein HW-Setup
- bestehend auf einem Adruino Nano V3, einem DS1820 und einem COUNTER Nachbau - soweit korrekt ist, da Ethersex
die Devices findet (ok, mit dem COUNTER kann Ethersex nicht umgehen, das ist aber eine andere Geschichte):

1w list
1020a48c02080093
1da2d98400000237
OK
1w convert
OK
1w get 1020a48c02080093
23.6
1w get 1da2d98400000237
unknown sensor type


An einem 1W-IF-ETH laufen die beiden 1w Devices übrigens ebenfalls klaglos.  Ok, also Ethersex runter und FRM mit folgender
Config drauf:

#include <UIPEthernet.h>

#if defined ethernet_h || defined UIPETHERNET_H
/*==============================================================================
* Network configuration for Network Firmata
*============================================================================*/
#define NETWORK_FIRMATA
//replace with ip of server you want to connect to, comment out if using 'remote_host'
#define remote_ip IPAddress(192,168,2,42)
//replace with hostname of server you want to connect to, comment out if using 'remote_ip'
//#define remote_host "server.local"
//replace with the port that your server is listening on
#define remote_port 3030
//replace with arduinos ip-address. Comment out if Ethernet-startup should use dhcp
#define local_ip IPAddress(192,168,2,40)
//replace with ethernet shield mac. It's mandatory every device is assigned a unique mac
const byte mac[] = {0x90,0xA2,0xDA,0x0D,0x07,0x02};
#endif

// To configure, save this file to your working directory so you can edit it
// then comment out the include and declaration for any features that you do
// not need below.

// Also note that the current compile size for an Arduino Uno with all of the
// following features enabled is about 22.4k. If you are using an older Arduino
// or other microcontroller with less memory you will not be able to include
// all of the following feature classes.

#include <utility/DigitalInputFirmata.h>
DigitalInputFirmata digitalInput;

#include <utility/DigitalOutputFirmata.h>
DigitalOutputFirmata digitalOutput;

#include <utility/AnalogInputFirmata.h>
AnalogInputFirmata analogInput;

#include <utility/AnalogOutputFirmata.h>
AnalogOutputFirmata analogOutput;

//#include <Servo.h> //wouldn't load from ServoFirmata.h in Arduino1.0.3
//#include <utility/ServoFirmata.h>
//ServoFirmata servo;

//#include <Wire.h> //wouldn't load from I2CFirmata.h in Arduino1.0.3
//#include <utility/I2CFirmata.h>
//I2CFirmata i2c;

#include <utility/OneWireFirmata.h>
OneWireFirmata oneWire;

//#include <utility/StepperFirmata.h>
//StepperFirmata stepper;

#include <utility/FirmataExt.h>
FirmataExt firmataExt;

//#include <utility/FirmataScheduler.h>
//FirmataScheduler scheduler;

//#include <utility/EncoderFirmata.h>
//EncoderFirmata encoder;


FHEM ist soweit glücklich, der Arduino wird erkannt und initialisiert:

Internals:
   CONNECTS   1
   DEF        3030 global
   DeviceName 3030
   FD         5
   NAME       NANO1
   NOTIFYDEV  global
   NR         944
   NTFY_ORDER 50-NANO1
   PORT       3030
   STATE      Initialized
   TYPE       FRM
   analog_pins 14,15,16,17,18,19
   analog_resolutions 14:10,15:10,16:10,17:10,18:10,19:10
   firmware   Firmata_Nano.ino
   firmware_version V_2_06
   input_pins 2,3,5,6,7,8,9,14,15,16,17,18,19
   onewire_pins 2,3,5,6,7,8,9,14,15,16,17,18,19
   output_pins 2,3,5,6,7,8,9,14,15,16,17,18,19
   pwm_pins   3,5,6,9
   pwm_resolutions 3:8,5:8,6:8,9:8
   Socketdevice:
     BUF       
     DeviceName 3030
     FD         21
     NAME       FRM:192.168.2.40:1034
     NR         948
     SNAME      NANO1
     STATE      Connected
     TEMPORARY  1
     TYPE       FRM
Attributes:
   room       HAR
   verbose    5


Internals:
   ALARMED    no
   DEF        9
   FRM_OWX_CORRELATIONID 0
   INTERFACE  firmata
   IODev      NANO1
   NAME       OWHAR
   NOTIFYDEV  global
   NR         945
   NTFY_ORDER 50-OWHAR
   PIN        9
   PRESENT    1
   ROM_ID     FF
   STATE      Initialized
   TYPE       OWX
   followAlarms off
   interval   300
   ALARMDEVS:
   CHANGETIME:
   DEVS:
   Frm_owx_replies:
   Helper:
     Dblog:
       State:
         Mydblog:
           TIME       1397852466.32928
           VALUE      defined
   Readings:
     2014-04-18 22:21:06   state           defined
Attributes:
   IODev      NANO1
   buspower   real
   dokick     1
   room       HAR


Als PIN habe ich den selben gewählt wie beim Ethersex Setup (PIN 9 aka D6). Allerdings wird keines der beiden 1w Devices
erkannt:

2014.04.18 22:21:11 3: Firmata Firmware Version: Firmata_Nano.ino V_2_06
2014.04.18 22:21:11 5: FRM:>f069f7
2014.04.18 22:21:11 5: FRM:>f06bf7
2014.04.18 22:21:11 5: FRM:<f06a7f7f7f7f7f7f7f7f7f7f7f7f7f7f000102030405f7f06c7f7f0001010107017f00010101030807017f7f00010101030807017f00010101030807017f0001010107017f0001010107017f00010101030807017f7f7f7f7f00010101020a07017f00010101020a07017f00010101020a07017f00010101020a07017f00010101020a07017f00010101020a07017ff7
2014.04.18 22:21:11 5: FRM:>f07a6807f7
2014.04.18 22:21:11 5: FRM:>f40907
2014.04.18 22:21:16 5: FRM:>f0734009f7
2014.04.18 22:21:16 5: FRM:<f0734209f7
2014.04.18 22:21:16 1: OWX: 1-Wire devices found on bus OWHAR ()
2014.04.18 22:21:21 5: FRM:>f0734009f7
2014.04.18 22:21:21 5: FRM:<f0734209f7
2014.04.18 22:21:21 1: OWX: 1-Wire devices found on bus OWHAR ()
2014.04.18 22:24:16 5: FRM:>f0734009f7
2014.04.18 22:24:16 5: FRM:<f0734209f7
2014.04.18 22:24:16 1: OWX: 1-Wire devices found on bus OWHAR ()
2014.04.18 22:26:07 5: FRM:>f0730109f7
2014.04.18 22:26:07 5: FRM:>f07320094c0901f7


Zur Sicherheit habe ich mir eben noch einmal die ganz frische 10_FRM.pm  Version aus dem SVN gezogen, aber leider
ohne Änderung am Ergebnis  :(

Mache ich hier etwas grundsätzlich falsch ?

Danke & Gruß, Marc

ntruchsess

Zitat von: marc2 am 18 April 2014, 22:41:51
Mache ich hier etwas grundsätzlich falsch ?

Nein, vermutlich hast Du die 10_FRM.pm Rev. 5541 erwischt, da funktioniert OWX gar nicht. Die Version kam am 17. auf 18. April per update. Wenn Du jetzt ein update machst, sollte es gehen.

Gruß,

Norbert
while (!asleep()) {sheep++};

marc2

Hallo Norbert,

nein leider nicht. Das 10_FRM.pm ist aktuell. Weder per FHEM update noch SVN gibt es eine neuere Version.

root@bbb:/opt/fhem/FHEM# ls -l 10_FRM.pm
-rwxr-xr-x 1 fhem dialout 34597 Apr 19 11:33 10_FRM.pm
root@bbb:/opt/fhem/FHEM# sum 10_FRM.pm
58181    34


Es muss also doch noch ein versteckter Fehler in meinem Setup sein.

Gruß, Marc

ntruchsess

Zitat von: marc2 am 18 April 2014, 22:41:51
Internals:
   DEF        9
   INTERFACE  firmata
   IODev      NANO1
   PIN        9
...


Als PIN habe ich den selben gewählt wie beim Ethersex Setup (PIN 9 aka D6).

D6 ist nach Firmata-Zählung 'Pin 6', nicht 'Pin 9'.

Gruß,

Norbert
while (!asleep()) {sheep++};

marc2

#7
Bingo  :)

OWX: 1-Wire devices found on bus OWHAR (Thermometer2_HAR,gaszaehler)

Mit OWX fuktioniert es nun wunderbar mit OWX_ASYNC bekomme ich es leider nicht angelegt:

fhem> define OWHAR OWX_ASYNC 6
OWX_ASYNC_Init failed: unable to assign IODev to 'OWHAR'


Das FRM Device ist natürlich unverändert definiert.

Vielen Dank & Gruß, Marc