Arduino und Firmata -- keine Netzwerkverbindung

Begonnen von Joskafa, 31 März 2016, 20:13:36

Vorheriges Thema - Nächstes Thema

jensb

Hallo R1F800,

die Firmata-Version, die beim Compiliern verwendet wird, findest du in der Arduino-IDE im Bibliotheksverwalter. Da besteht auch die Möglichkeit, die Version zu ändern. Anschließend sollte man den Firmata-Sketch aus den Beispielen mit dem eigenen vergleichen. Je nach ursprünglicher Firmata-Version können sich Details im Beispiel-Sketch verändert haben.

Bei Fimata müssen 2 Versionsnummern unterschieden werden: Die Programm/Firmware-Version und die Netzwerk-Protokoll-Version. Beide finden sich im Firmata-Source. Wie Wzut schon sagte, unterstützt die Standard-FHEM-Installation maximal die Programm/Firmware-Version 2.6. Der schon in anderen Threads erwähnte FHEM-Treiber-Update für Firmata erlaubt es, alle Firmata-Versionen zu nutzen, da bei dann bei Bedarf einfach die größte auf FHEM-Seite implementierte Protokoll-Version (also 2.6) verwendet wird, denn nur die ist für die Funktion relevant.

Von Norbert gibt es die offizielle Treiber-Version 0.61 für FHEM https://github.com/ntruchsess/perl-firmata und von mir die 0.63 https://github.com/jnsbyr/perl-firmata. Die Standard-FHEM-Installation enthält übrigens die Version 0.59 (siehe  FHEM/lib/Device/Firmata.pm).

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

R1F800

OK. ich werde das nun noch einmal mit der Firmata 2.6 Firmware probieren ...
Den Treiber inkludiere ich dann in FHEM, also kopiere das Din in das Zielverzeichnis??

jensb

Hallo R1F800!

Vorschlag: Nicht mehrere Sachen gleichzeitig ändern. Wenn du mit Firmata 2.6 weiter machen kannst und willst, dann lass den Treiber erst einmal unverändert.

Den neuen Treiber brauchst du nur für Firmata ab 2.7. Dazu das Zip von Github herunterladen, deine Originale (Datei Firmata.pm und Unterverzeichnis FHEM/lib/Device/Firmata) sichern und den Zip-Inhalt von "lib/Device" in das Unterverzeichnis FHEM/lib/Device kopieren. Der Rest vom Zip wird nicht benötigt.

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

R1F800

Zitat von: jensb am 14 März 2017, 20:54:59
Hallo R1F800!

Vorschlag: Nicht mehrere Sachen gleichzeitig ändern. Wenn du mit Firmata 2.6 weiter machen kannst und willst, dann lass den Treiber erst einmal unverändert.

Den neuen Treiber brauchst du nur für Firmata ab 2.7. Dazu das Zip von Github herunterladen, deine Originale (Datei Firmata.pm und Unterverzeichnis FHEM/lib/Device/Firmata) sichern und den Zip-Inhalt von "lib/Device" in das Unterverzeichnis FHEM/lib/Device kopieren. Der Rest vom Zip wird nicht benötigt.

Grüße,
Jens

Hallo Jens,

kannst Du vielleicht noch einen Link zu der FIRMATA 2.6 reinhängen?
Ich habe bisher die fertige configurable Firmata genommen .... dann die IP und MaC angepaßt und dann noch Funktionen die ich nicht brauchte eliminiert ...


jensb

Hallo R1F800,

das neuste Firmata gibt es auf GitHub: https://github.com/firmata/arduino

Die Standard-Version lässt sich aber am einfachsten über die Bibliotheksverwaltung der Arduino-IDE installieren und aktualisieren. Anschließend im Arduino-Menü Beispiele - Firmata - StandardFirmataEthernet(Plus) auswählen.

ZitatIch habe bisher die fertige configurable Firmata genommen .... dann die IP und MaC angepaßt und dann noch Funktionen die ich nicht brauchte eliminiert ...
Das geht auch bei Standard Firmata so, nur dass man da bei Bedarf selbst auskommentieren muss. Will man ein ENC28J40 Ethernet mit einem Nano oder MiniPro verwenden ist das auf jeden Fall nötig, bei einem W5100 Ethernet meist nicht.

Ob Standard Firmata überhaupt für dich als Alternative in Frage kommt, liegt an den Funktionen die du brauchst, denn Configurable Firmata kann einfach mehr. Willst du die aktuelle Version 2.9.2 von Configurable Firmata ausprobieren, musst du vorher den Firmata-Treiber von FHEM aktualisieren.

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

R1F800

OK.
Danke.

Also meine Anforderungen an das Ethernetshield auf dem der Arduino sitzt sind:

1Wire über irgendeinen PIN
GPIO out zum schalten von Relais
und ein SPI SDL/SCL für ein Display

Damit ich das was ich über den Wemos erledige an neuralgischen Punkten über verdrahtetes Netzwerk machen kann.

jensb

Hallo R1F800,

wenn du 1Wire verwenden willst, führt an ConfigurableFirmata keine Weg vorbei. Also hast du zwei Möglichkeiten: ConfigurableFirmata 2.6X verwenden oder aktuelle ConfigurableFirmata nehmen und FHEM-Firmata-Treiber manuell updaten.

Mit dem W5100 Ethernet kannst du wie gesagt eine ganze Menge Speicher einsparen, falls es nicht passen sollte. Bei Bedarf einfach das Projekt auf W5100 umkonfigurieren und die Speicherangaben des Compilers vergleichen, dazu brauchst du noch keine Hardware.

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

R1F800

OK. Dann werde ich wohl oder über den GITHUB mir die Cofigurable Firmata 2.9.2 https://github.com/firmata/ConfigurableFirmata nehmen und den Treiber ebenfalls manuell auf dem FHEM anpassen : https://github.com/jnsbyr/perl-firmata

Das habe ich dann doch so richtig verstanden ?

Zum Vorgehen dann:


  • Sketch vom Config Firmata anpassen auf meine Bedürfnisse
  • flashen
  • PERL Firmata Treiber 0.6 (Firmata.pm) auf den FHEM Server nach "opt/FHEM/"  kopieren

und nun ?


jensb

Hallo R1F800,

ja das Vorgehen, passt. Beim FHEM-Treiber nicht nur Firmata.pm sondern das ganze Firmata-Verzeichnis aktualisieren.

Auf
Zitatund nun ?
fällt mir nur der Verweis auf die Commandref und die Wiki ein:

https://wiki.fhem.de/wiki/Arduino_Firmata
https://wiki.fhem.de/wiki/Arduino_mit_OneWireFirmata

Du musst zuerst dafür sorgen, dass dein Arduino die Verbindung mit deinem FRM-Device aufbaut. Sobald das funktioniert, kannst du FRM_OUT und OWX dazu nehmen.

Ein Problem wird dein Wunsch für das SPI Display werden. Derzeit unterstützt Firmata kein SPI. Es ist zwar geplant, aber es steht noch kein Termin fest (siehe https://github.com/firmata/protocol/issues/26. Entsprechend gibt es auch keine Treiber-Untersützung auf der FHEM-Seite. Für ein Display benötigst du fast immer einen zusätzlichen Display-Treiber. Für das Wemos OLED Display gibt es aber sogar mehrere für Arduino. Am einfachsten wäre es daher, wenn du deinen Firmata-Sketch so aufbauen kannst, dass du die Display-Ausgaben selbst auf dem Arduino programmierst und mit Firmata "nur" die Daten zum Arduino überträgst. Ein solches Projekt wird aber wahrscheinlich nicht in einen Nano oder MiniPro passen und außerdem gibt es dafür auch keine fertigen Beispiele.

Das Wemos OLED Display kann aber auch per I2C angesteuert werden und das wird sowohl von Firmata als auch von FHEM unterstützt. Allerdings hast du dann immer noch keinen Display-Treiber und müsstest mit Hilfe des Display-Handbuchs die erforderlichen I2C-Befehlssequenzen in FHEM selbst programmieren, was allein von der Performance her eher suboptimal wäre.

Eine Chance das mit vertretbarem Aufwand umzusetzen hast du nur, wenn du ein I2C-Display verwendest, dass direkt mit Texten angesteuert werden kann, also fallen die Punktmatrix-Displays aus. Vielleicht findest du was passendes.

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

R1F800

Soweit so gut ...

das Wiki habe ich schon gelesen. Ich versteh nur die Synthax nicht :
define LANDuino1 FRM ???

Wieso ist in dem Beispiel ein Port als USB angegeben ?
Der Arduino hängt doch auf dem Ethernetboard  :-[

jensb

Hallo F1F800,

in der Wiki wird ein Überblick über den Gesamtzusammenhang gegeben, aber nicht auf alle Anwendungsvarianten eingegangen, das würde auch nur verwirren.

FRM unterstützt mehre Schnittstellen für die Anbindung von Firmata-Devices. Lies unbedingt die Commandref von FRM (und von jedem anderen Modul, für das du dich interessierst).  Im Abschnitt "define" werden die Verbindungsmöglichkeiten beschrieben, auch die Netzwerkverbindung. Hier ein praktisches Beispiel für einen Arduino mit LAN:

define Arduino FRM 3030 global

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

jnewton957

Zum Thema mega und Ethernet shield w5100 kann ich noch beitragen, dass man zwischen shield netztwerkanschluss und mega ein Stück Papier klemmen muss. Das ist sehr schnell ein Kontakt eben genau da. Und dann bekommt mein keine ip Adresse und den mega somit nicht ins LAN.

Also Papier (oder was anderes extrem dünnes)  zwischen shield und mega klemmen.

Grüße
Jörg

Gesendet von meinem SM-T800 mit Tapatalk

FHEM6.2 auf Pi5
V 1.66 nanoCUL 433 (IT)
V 1.66 nanoCUL868 (HM)
sqlite3 LogDb
ELRO AB440, DECT200,  TFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo),tibber Pulse, Kostal Pico, cfos Wallbox, Modbus TCP

R1F800

Nun ich habe halt die ENC28J60  nano Ethernet shields V1.0 auf Grund Ihrer Bauform gekauft.
( von Deek-Robot )

das flashen etc. läuft, die LAN LED leuchtet, aber ich bekomme partout keine Connection auf das LAN Gerät ....

R1F800

So,
neu geflashed, die Spannungsversorgung statt 5V auf empfohlene 3V3  ... NIX  als wolle das LAN Shield einfach nciht funktionieren.
Das flashen funnktioniert jeweils einwandfrei. Kein Fehler kein gar nichts.

Der Zugriff jedoch auf das Shield ist jedoch nicht möglich.

Die PIN Zuordnungen habe ich mir auch noch einmal eingesehen ... klappt auch nicht ... Vielleicht sind die ENC28J60 tatsächlich unbrauchbar und ich muss zwingend auf den W5100 umschwenken ... ?

aber ich will ja nur einen LAN Schalter / Sensor (Digitial IO)bzw. 1 Wire ans Netzwerk hängen ....

Wzut

Zitat von: R1F800 am 11 April 2017, 10:32:48
Vielleicht sind die ENC28J60 tatsächlich unbrauchbar und ich muss zwingend auf den W5100 umschwenken ... ?
Unbrauchbar sind sie nicht aber halt etwas hungrig nach Speicher.
Mit welcher Firmata Version bist du denn jetzt aktuell am Start ?
Wie ich hier im Forum schon mehrfach geschrieben habe läuft bei mir seit Jahren die alte 2.6 absolut zuverlässig mit dem W5100. Bei den ENC28J60 wird mit den Uno/Nanos verdammt eng mit dem Speicher, der Mega sollte da aber etwas pflegeleichter sein.
Wenn du nicht mal eine einfache Verbindung hin bekommst, blöde Frage : Hast du den auch im Arduino Sketch den UIP reingenommen (# entfernt) und den W5100 komplett auskommentiert ? 
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher