Firmata over ethernet mit Arduino Uno + w5100

Begonnen von pwfhem, 06 April 2014, 10:02:20

Vorheriges Thema - Nächstes Thema

pwfhem

Liebe Helfer,

ich quäle mich seit Tagen configurable firmata auf arduino uno mit w5100 shield zum Laufen zu bringen. Bisher erfolglos.
Meine Umgebung:
FHEM 5.5 (update atuell) auf RaspberryPi (wheezy aktuell)
angeschlossen per USB am FHEM: FHZ 1000: geht super und Jeelink: geht auch prima
jetzt sollte noch ein firmata over ethernet (zum Zähler-Auslesen) dran

in FHEM:
define Arduino FRM 3030 global

der sketch: original ConfigurableFirmata mit folgenden Änderungen:
#include <SPI.h>
#include <Ethernet.h>
#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,40)
//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,166)
//replace with ethernet shield mac. It's mandatory every device is assigned a unique mac
const byte mac[] = {0x00,0x0E,0x53,0x26,0x60,0xE3};
#endif

im FHEM-log sieht das dann so aus:
2014.04.06 08:23:35 4: Connection accepted from FRM:192.168.2.166:1076
2014.04.06 08:23:35 5: 20>ff
2014.04.06 08:23:35 5: SW: ff
2014.04.06 08:23:35 5: 20<e0,7f,07,e1,7f,07,e2,4b,05,e3,4b,04,e4,27,03
2014.04.06 08:23:35 5: 20<e5,77,02
2014.04.06 08:23:38 3: querying Firmata Firmware Version
2014.04.06 08:23:38 5: 20>f0,79,f7
2014.04.06 08:23:38 5: SW: f079f7
2014.04.06 08:23:39 3: querying Firmata Firmware Version
2014.04.06 08:23:39 5: 20>f0,79,f7
2014.04.06 08:23:39 5: SW: f079f7
2014.04.06 08:23:40 3: querying Firmata Firmware Version
2014.04.06 08:23:40 5: 20>f0,79,f7
2014.04.06 08:23:40 5: SW: f079f7
2014.04.06 08:23:40 3: no response from Firmata, closing DevIO
2014.04.06 08:23:40 1: 3030 disconnected, waiting to reappear

als nächstes habe ich probiert, noch mehr PINS zu ignorieren (war nicht ganz sicher, wie ich das auf arduino.cc verstehen sollte)
#ifdef NETWORK_FIRMATA
  // ignore SPI and pin 4 that is SS for SD-Card on Ethernet-shield
  for (byte i=0; i < TOTAL_PINS; i++) {
    if (IS_PIN_SPI(i)
        || 4==i
        || 10==i //explicitly ignore pin 10 on MEGA as 53 is hardware-SS but Ethernet-shield uses pin 10 for SS
        || 11==i
        || 12==i
        || 13==i
        ) {
      Firmata.setPinMode(i, IGNORE);
    }
  }
  //pinMode(PIN_TO_DIGITAL(53), OUTPUT); //configure hardware-SS as output on MEGA
  pinMode(PIN_TO_DIGITAL(4), OUTPUT); // switch off SD-card bypassing Firmata
  digitalWrite(PIN_TO_DIGITAL(4), HIGH); // SS is active low;

  // start up Network Firmata:
  Firmata.begin(stream);

jetzt sieht das FHEM-log so aus (kaum eine Änderung):
2014.04.06 09:27:10 4: Connection accepted from FRM:192.168.2.166:1025
2014.04.06 09:27:10 5: 21>ff
2014.04.06 09:27:10 5: SW: ff
2014.04.06 09:27:10 5: 21<e0,7f,07,e1,7f,07,e2,58,05,e3,4e,04,e4,2d,03,e5,78,02
2014.04.06 09:27:13 3: querying Firmata Firmware Version
2014.04.06 09:27:13 5: 21>f0,79,f7
2014.04.06 09:27:13 5: SW: f079f7
2014.04.06 09:27:14 3: querying Firmata Firmware Version
2014.04.06 09:27:14 5: 21>f0,79,f7
2014.04.06 09:27:14 5: SW: f079f7
2014.04.06 09:27:15 3: querying Firmata Firmware Version
2014.04.06 09:27:15 5: 21>f0,79,f7
2014.04.06 09:27:15 5: SW: f079f7
2014.04.06 09:27:15 3: no response from Firmata, closing DevIO
2014.04.06 09:27:15 1: 3030 disconnected, waiting to reappear
2014.04.06 09:27:15 5: Triggering Arduino (1 changes)
2014.04.06 09:27:15 5: Notify loop for Arduino DISCONNECTED
2014.04.06 09:27:15 4: eventTypes: FRM Arduino DISCONNECTED -> DISCONNECTED

achso: wenn ConfigurableFirmata auf USB steht, funktionierts in/an FHEM (dann per  /dev/ttyACM0)
ich hab schon wireshark angeworfen, um dem Netzwerkverkehr zuzuschauen (es findet immer nur ein SYNC und ACK statt, keine Daten werden übertragen, danach bleibt der arduino bis zum reset tot)

hat jemand eine Idee?
ist noch irgendwas falsch mit den PINs im Arduino uno ?

Peter

ntruchsess

vieleicht ist es ein Hardwarproblem. Wenn das Shield über den ICSP-Connector angeschlossen ist, dann kann es leicht sein, dass der Stecker am Shield etwas zu kurz ist und der Arduino darüber nicht in beide Richtungen kommunizieren kann. So war das jedenfalls bei mir mit einem Ethernetshield-clone von Ebay.

Gruß,

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

MBHG

Was hast Du denn genau für ein w5100 Modul? Vielleicht ist es von dem Bug betroffen

https://arduinodiy.wordpress.com/2017/04/12/the-w5100-bug/
-----------------------------------------------------------
https://smarthome.family.blog Debian Linux, NanoCUL 868, Signalduino, 4x HM-SW4, 11x HM Asksin Unisensor, NodeMCU ESP8266, RCS 1000 N Comfort, Magic Home, Rauchmelder PT2262, Babble

pwfhem

danke für die Hilfe.
Ich habe vor 6 Monaten aufgegeben und bin zu Fibaro (HC2) übergelaufen.
Ein Grund war auch der WAF ... ;)