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 ()
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 (https://github.com/firmata/arduino/blob/configurable/examples/ConfigurableFirmata/ConfigurableFirmata.ino#L57) 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
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.
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
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
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
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
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