FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: dreche am 11 April 2017, 12:37:40

Titel: Problem bei Verbindung von Arduino mit FHEM
Beitrag von: dreche am 11 April 2017, 12:37:40
Hallo zusammen,
ich habe Probleme damit einen Arduino über Ethernet mit FHEM zu verbinden.

Ziel:
Ich möchte mit FHEM einfach nur eine LED an einem Arduino schalten.

Bauteile:
Arduino Mega 2560 + EthernetShield
FHEM läuft auf einem RPi2

Bisher:
Arduino IDE 1.8.2 heruntergeladen und installiert
/Programmex86/Arduino/hardware/arduino/avr/libraries neuen Ordner Firmata erstellt und Configurable Firmata eingefügt
in der IDE die Configurable Firmata öffnen
Einstellungen am Code vornehmen:
(IP des Servers, Port , IP des Arduino auskommentieren da DHCP, MacAdresse)
Zitat#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,178,29)
//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. Is ignored on Yun
//#define local_ip IPAddress(192,168,0,6)
//replace with ethernet shield mac. It's mandatory every device is assigned a unique mac. Is ignored on Yun
const byte mac[] = {0x90, 0xA2, 0xDA, 0x10, 0x23, 0x57};
#endif
(Pinbelegung für MEGA250 und EthernetShield)
Zitat// Network Firmata communicates with Ethernet-shields over SPI. Therefor all
  // SPI-pins must be set to IGNORE. Otherwise Firmata would break SPI-communication.
  // add Pin 10 and configure pin 53 as output if using a MEGA with Ethernetshield.
  // No need to ignore pin 10 on MEGA with ENC28J60, as here pin 53 should be connected to SS:
#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
       ) {
      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;
Sketch auf Board laden

in FHEM:
define Arduino FRM 3030 global

Problem:
Es besteht keine Verbindung zwischen Arduino und FHEM
FRM-Device steht auf listening

Frage:
Fehlt noch etwas, habe ich einfach nur einen Schritt vergessen oder übersprungen oder habe ich vllt falsche Einstellungen im Code vorgenommen?

Schonmal im Vorraus Vielen Dank
Titel: Antw:Problem bei Verbindung von Arduino mit FHEM
Beitrag von: Thorsten Pferdekaemper am 12 April 2017, 09:16:25
Hi,
woher weiß FHEM die IP-Adresse des Arduino?
Gruß,
   Thorsten
Titel: Antw:Problem bei Verbindung von Arduino mit FHEM
Beitrag von: dreche am 12 April 2017, 10:20:03
Hi Thorsten,
so wie ich das verstehe wird das über "global" erreicht. Einmal wird das in folgendem Link beschrieben, zudem habe ich das in irgend einer Diskussion schonmal gelesen.
https://wiki.fhem.de/wiki/Arduino_Firmata (https://wiki.fhem.de/wiki/Arduino_Firmata)
Zitat'global' muss angegeben werden, damit der Serversocket an alle IP-addressen gebunden wird.
Vielleicht habe ich das aber auch falsch verstanden oder das ist auf andere Fälle bezogen gewesen.
Titel: Antw:Problem bei Verbindung von Arduino mit FHEM
Beitrag von: Thorsten Pferdekaemper am 12 April 2017, 10:29:11
Hi,
achso, FHEM ist der Server.
Na dann ist doch erstmal alles wie erwartet, oder?
Laut Commandref sieht es so aus, als ob Du jetzt noch mindestens ein FRM_OUT-Device brauchst.
Gruß,
   Thorsten
Titel: Antw:Problem bei Verbindung von Arduino mit FHEM
Beitrag von: dreche am 12 April 2017, 11:01:28
Hi,
ich habe anschließend "define LED FRM_OUT 13" abgesetzt und so eine FRM_OUT eingebunden. Dieses verbindet sich auch gleich mit dem FRM. Das Problem scheint zu sein, dass zwischen dem FRM und dem Arduino keine Verbindung entsteht.
Wenn ich z.B. in dem FRM_OUT auf "on" klicke dann sagt mir das " LED, Arduino is not connected at ./FHEM/10_FRM.pm line 606"
Titel: Antw:Problem bei Verbindung von Arduino mit FHEM
Beitrag von: Wzut am 12 April 2017, 11:53:12
Tipp 1 : Nimm die Configurable Firmata V 2.06 , alles was neuer ist macht nur unnötige Probleme
Tipp 2 : Nimm zum testen nicht Pin 13  , wenn deine Verbindung steht wirst sehen das der fehlt weil es ein SPI Pin ist.
Internals:
   CONNECTS   1
   DEF        3030 global
   DeviceName 3030
   FD         27
   NAME       FRM_Keller
   NOTIFYDEV  global
   NR         158
   NTFY_ORDER 50-FRM_Keller
   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
   encoder_pins 2,3
   encoder_resolutions 2:28,3:28
   firmware   ConfigurableFirmata.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
   servo_pins 2,3,5,6,7,8,9
   servo_resolutions 2:14,3:14,5:14,6:14,7:14,8:14,9:14
   Socketdevice:
     BUF
     DeviceName 3030
     FD         28
     NAME       FRM:192.168.0.180:2406
     NR         401
     SNAME      FRM_Keller
     SSL
     STATE      Connected
     TEMPORARY  1
     TYPE       FRM
Attributes:
   DbLogExclude .*
   room       IO_Dev
   verbose    3


Titel: Antw:Problem bei Verbindung von Arduino mit FHEM
Beitrag von: dreche am 12 April 2017, 17:13:06
Wie bekomme ich denn die Version meiner Configurable Firmata herraus? Ist das die Version, die in der Datei Firmata.h erwähnt wird? Dann habe ich nämlich die Version 2.6.2 welche du doch meintest oder?
Titel: Antw:Problem bei Verbindung von Arduino mit FHEM
Beitrag von: Wzut am 12 April 2017, 19:56:52
Tipp 3 : Gib mal in der Forensuche "Firmata 2.06" ein , du wirst sehen wie oft das hier schon ein Thema war.
Anleitung zum Download von 2.06 -> https://forum.fhem.de/index.php/topic,44525.msg386196.html#msg386196
Titel: Antw:Problem bei Verbindung von Arduino mit FHEM
Beitrag von: Thorsten Pferdekaemper am 12 April 2017, 20:41:45
Zitat von: dreche am 12 April 2017, 17:13:06
Dann habe ich nämlich die Version 2.6.2 welche du doch meintest oder?
2.6.2 ist nicht 2.06...
Titel: Antw:Problem bei Verbindung von Arduino mit FHEM
Beitrag von: dreche am 13 April 2017, 12:28:30
Tut mir leid wenn ich mich vllt etwas dumm anstelle aber wo steht in der configurable Firmata die Version?
Titel: Antw:Problem bei Verbindung von Arduino mit FHEM
Beitrag von: Wzut am 13 April 2017, 16:25:39
in der Firmata.h, die drei Zalen sind auf drei Konstanten verteilt
Titel: Antw:Problem bei Verbindung von Arduino mit FHEM
Beitrag von: dreche am 19 April 2017, 11:32:11
Hatte in den letzten Tagen etwas wenig Zeit und bin leider immernoch nicht weiter gekommen.

Ich habe eine Firmata.h 2.0.13 gefunden. Mit dieser funktioniert allerdings meine configurable firmata nicht mehr.

Seid ihr euch denn da ziemlich sicher, dass es mit der Version zu tun hat? Ich hatte den Eindruck, dass es in den entsprechenden Diskussionen darum geht, dass irgendwelche Pins nicht angezeigt werden oder ähnliches. Ich bekomme aber noch nicht einmal eine Verbindung hin.
Titel: Antw:Problem bei Verbindung von Arduino mit FHEM
Beitrag von: Wzut am 19 April 2017, 14:37:51
Dann backe doch erst einmal ganz kleine Brötchen wenn es mit dem Brotlaib nicht klappt.
D.h. vergiss Firmata und teste erst einmal deine Ethernet Hardware mit Hilfe der Demo Sketches und löse dich von DHCP und verwende fixe IPs. Wenn das alles klappt gehe zurück zu Conf Firmata und poste mal deinen kompletten .ino Sketch in Code Tags. Auch wenn die Verbindung zu FHEM selbst nicht klappt muss der Arduino zumindest anbingbar sein.
Titel: Antw:Problem bei Verbindung von Arduino mit FHEM
Beitrag von: dreche am 19 April 2017, 15:38:02
Hallo zusammen,
endlich eine erfreuliche Botschaft.
Ich habe gestern, genau wie Wzut heute meinte, nochmal neu und ganz klein angefangen und habe gerade eben endlich den Fehler gefunden.

Wahrscheinlich hättet ihr mich direkt drauf bringen können, hätte ich meine Hardwareangaben nocheinmal überprüft. Ich benutze nämlich kein EthernetShield sondern EthernetShield2, welches einen WiZ5500 besitzt. Dieses Shield funktioniert anscheinend nicht mit der Ethernet.h sondern nur mit Ethernet2.h.

Nachdem ich in Foren zu Arduino und Ethernetverbindungen rumgestöbert habe, bin ich auf den Fehler gestoßen. Anschließend war alles sehr einfach. Ethernet2.h runterladen, in den Libraries ordner kopieren und im Sketch eine 2 hinter Ethernet geschrieben. Fertig.
In FHEM funktionierte alles auf Anhieb. Die Version(2.6.2) macht zumindest fürs erste auch keine Probleme alle Pins werden angezeigt und auch PIN 13 steht zur Verfügung.

Vielen Dank für eure Hilfe