Hallo,
gibt's eigentlich eine Möglichkeit, per USB ein I/O-Port zu verbinden, über den man mehrere Ein- und Ausgänge direkt in FHEM verwenden kann?
Was könnt ihr empfehlen und wie wird das dann eingebunden/genutzt?
Moin stobor
Ich benutze ein Arduino (UNO/Mega) made in China.
Auf dem läuft (Configurable-) Firmata.
Je nach Arduino hat man entsprechend viele IO-PORTS und Analogeingänge usw. zur Verfügung.
Wenns auch über WLAN gehen soll gibt's Espeasy/ Tasmota. Die setzen Arduino und/oder ESP8266/ESP32
voraus.
Soweit mal was ich bisher in Benutzung habe.
Gibt's sicher noch mehr ;D
Gruß Gerd
Ich würde gern bei meinem NUC bleiben und nur ne Schnittstelle (am besten per USB) nachrüsten.
Wie bindet man so etwas denn dann in FHEM ein?
Ich habe da gerade was gefunden: USB PIO TTL Digital IO (https://www.meilhaus.de/usb-pio.htm )
Wie könnte man so etwas bspw. an den NUC (Linux Ubuntu) anschließen und in FHEM betreiben, so dass Eingänge der Schaltung bspw. per NOTIFY überwacht werden können, und man Ausgänge bspw. per SET steuern kann?
Ich denke, dass Du Dir ein Modul schreiben müsstest. Ähnlich wie Du es bereits mit dem CUL als Anwender "gewohnt" bist.
Ich hab mir mal ein Modul für meine Wechselrichter erstellt, die ich per USB/RS232- Wandler seriell bei mir eingebunden habe.
Wenn das "Ding" einen eigenen Webserver hat, ginge es vielleicht über HTTPMOD. An diesem Bespiel siehst Du, dass es auf die Softwareschnittstelle ankommt, die das "Ding" bietet.
Grüße Markus
Hallo stobor,
ggf. kannst Du mal schauen, ob Du mittels bit banging (https://www.ftdichip.com/Support/Documents/AppNotes/AN_373%20Bit-Bang%20Modes%20for%20the%20FT-X%20Series.pdf) mit einem FTDI Chip die Sache lösen kannst. Ob es da ein FHEM Modul gibt, weiß ich nicht.
Gruß Peter
Zitat von: Maista am 24 November 2018, 20:07:25
Ich benutze ein Arduino (UNO/Mega) made in China.
Auf dem läuft (Configurable-) Firmata.
Je nach Arduino hat man entsprechend viele IO-PORTS und Analogeingänge usw. zur Verfügung.
Moin stabor,
hast du dir das mal angesehen?
Ansonsten, wenn es ggf. darum geht, größere Distanzen mit Kabel zu überbrücken: MySensors mit RS485 oder Modbus (da gibt es auch Relaiskarten für).
Vielleicht schreibst du aber auch schlicht mal, was du eigentlich erreichen willst?
Gruß, Beta-User
Ich würde gern bei meinem NUC mit Ubuntu bleiben und nicht das ganze System umstellen.
Direkt neben dem NUC habe ich einen Schaltschrank, der Relais beinhaltet, die Außenbeleuchtung schalten (12V Relais, die 230V schalten). Diese Relais würde ich gern ansteuern. Bisher habe ich einen FS20-Empfänger (z.B.: FS20 SM8), der dann die Relais triggert. Aber bei einem Abstand von 50cm macht Funk ja eigentlich gar keinen Sinn.
In diesem Schaltschrank gibt es auch 230V-Relais, die von Bewegungsmeldern gesteuert werden, und dann FS20 Sender triggern. Auch hier ist aufgrund der kurzen Distanz zum NUC Funk natürlich sinnlos.
Darum würde ich diese Aktoren/Sensoren gern direkt per Kabel verbinden - über IO-Board o.ä.
Toll wäre, wenn es bereits fertige Code-Elemente für entsprechende IO-Boards gibt.
Dann spricht doch eigentlich nichts gegen die Umsetzung mit Firmata und einem Arduino Uno/Nano.
Ups, verstehe ich das vielleicht erst jetzt?
Arduino Uno ist ein Gerät, was ich per USB mit meinem NUC verbinde, und der stellt mir dann die IO-Ports bereits? Der Arduino Uno selber beinhaltet also nicht FHEM selbst?
Wie muss ich den Arduino Uno denn präparieren?
Wie kann ich den dann in FHEM einbinden/benutzen, so dass ich per SET oder NOTIFY die Ports nutzen kann? Gibt's da ne Doku?
Zitat von: stobor am 26 November 2018, 10:53:38
Ups, verstehe ich das vielleicht erst jetzt?
Arduino Uno ist ein Gerät, was ich per USB mit meinem NUC verbinde, und der stellt mir dann die IO-Ports bereits? Der Arduino Uno selber beinhaltet also nicht FHEM selbst?
Wie muss ich den Arduino Uno denn präparieren?
Wie kann ich den dann in FHEM einbinden/benutzen, so dass ich per SET oder NOTIFY die Ports nutzen kann? Gibt's da ne Doku?
https://wiki.fhem.de/wiki/Arduino_Firmata
Welchen Arduino Uno würdet ihr empfehlen?
So etwas: https://www.conrad.de/de/arduino-board-uno-65139-atmega328-191789.html
Gegenfrage: Wieviele Ein- und Ausgänge brauchst du?
2x IN
4x OUT
Oder der hier: https://www.amazon.de/dp/B01EWOE0UU/ref=cm_sw_em_r_mt_dp_U_jA8-BbJ630N22
Sollten beide gehen (auch wenn man die Qualität der Nachbauten nicht im Voraus beurteilen kann); jedenfalls ist kein WCH340-USB-Seriell-Wandler verbaut, das ist schon mal gut.
Die Zahl der IO's ist überschaubar, da reicht also auch ein UNO (oder gleich ein Nano). Generelle Anmerkung noch: Bei Firmata läuft die eigentliche Steuerung der IO's auf der FHEM-Seite. Ich persönlich finde das nicht ganz überzeugend und halte die Logik lieber auf der Arduino-Seite. Das hat den Vorteil, das v.a. Echtzeitthemen (wie hier z.B. das triggern eines Ausgangs) ausgelagert werden können. Im Ergebnis würde ich daher empfehlen, zwei von den Arduinos zu besorgen, dann mit Firmata zu starten und ggf. z.B. mit MySensors weiter zu experimentieren. Das erfordert aber deutlich mehr Einarbeitung, von daher sollte alles steckbar sein...
Just my2ct.
Zitat von: stobor am 26 November 2018, 11:11:52
Oder der hier: https://www.amazon.de/dp/B01EWOE0UU/ref=cm_sw_em_r_mt_dp_U_jA8-BbJ630N22
Sieht doch nicht schlecht aus. Wenns kleiner sein soll: Arduino-Nano mit FTDI Chip.
Ich würde mich mal mit dem Conrad Modul versuchen (https://www.conrad.de/de/arduino-board-uno-rev3-dip-version-atmega328-1275279.html) .
Ich habe den Wiki-Artikel gerade gelesen (https://wiki.fhem.de/wiki/Arduino_Firmata). Welche Version von Firmata würdet ihr in meinem Fall empfehlen (ConfigurableFirmata oder Firmata)?
Ich würde dann den Arduino per USB mit meinem NUC (Ubuntu mit FHEM) verbinden. Muss ich dafür vor dem Kompilieren und Upload noch irgend etwas am Sketch verändern?
Und dann kann ich direkt in FHEM das Modul 10_FRM.pm ansprechen?
...einen Originalen zu kaufen, finde ich gut (unterstützt das Arduino-Projekt!).
Es gab (in der Bastelecke?) jüngst einen Beitrag, dee sich mit den diversen Versionen und Änderungen bei firmata befaßte. Im Prinzip müßte es mit den jeweils letzten Versionen vom Modul und Sketch gehen, bitte aber ggf. mal da nachlesen bzw. suchen.
Und ansonsten kann ich nur empfehlen, das dann einfach auszuprobieren. Ein Gefühl für diese ganzen Microcontroller-Sachen bekommt man nur, wenn man es austestet. Starten würde ich auch mit einem Blink-Sketch oä., dann was, was irgendwas an der seriellen Konsole ausgibt usw.; du kannst das bis zu 10.000 Mal überschreiben... Oder eben parallel einen weiteren Arduino (-Klon) bestellen, da ist nicht viel kaputt, dauert halt, bis der da ist ;) .
Gruß, Beta-User
Ich werde mich mal versuchen.
Das Blink-Sketch habe ich nicht gefunden. Wo steckt das denn?
Sonst habe ich das so verstanden:
- "Firmata" Firmware über Sketch > "Bibliothek einbinden" laden
- Board auswählen: Werkzeuge > Boards
- Arduino per USB mit dem PC verbinden und Upload betätigen, um Firmware einzuspielen
- Mit FHEM per USB verbinden und in der fhem.cfg
- per define anmelden: (Beispiel) define FIRMATA FRM /dev/ttyUSB0@57600
- Ein-/Ausgänge konfigurieren: (Beispiel) define Firmata_IN FRM_IN 12 ; define Firmata_OUT FRM_OUT 11
Ist das so richtig?
Das mit Blink findest du in der Arduino-IDE (in den Beispielsketchen).
Ansonsten sollte das im Wesentlichen so passen wie beschrieben (ggf. mit pullup), m.E. besser ist es allerdings, grundsätzlich alle USB-Geräte "by-id" einzubinden (siehe Wiki: mehrere USB-Geräte).
Es kommt Licht ins Dunkel.
Blink ist gefunden. Danke
by-id werde ich versuchen. Da ich derzeit 2 CULs nutze scheint das nciht immer zu funktionieren.
Na ja, wenn die USB-Kennung gleich ist, ist das mit by-id schwierig (die beiden CUL868 oder mehrere CH340G-USB-Wandler, wie sie gerne bei China-Nanos verbaut sind). Dann by-path für die CUL und by-id für den Rest (oder noch besser: einen der beiden mit neuerer, selbstgebauter firmware füttern und dabei boards.h (?) bearbeiten - da steht die jeweils vom ATMega32u4 ausgelieferte Kennung@USB drin).
Viel Erfolg jedenfalls!
Soooo, jetzt habe ich gerade den Arduino Uno Rev3 in Betrieb genommen. Schon toll, wie das funktioniert :-)
Allerdings hätte ich nun doch gern ein paar mehr digitale IO-Anschlüsse. Laut Conrad sollte dieser eigentlich 20 digitale IO-Ports haben (https://www.conrad.de/de/arduino-board-uno-rev3-dip-version-atmega328-1275279.html - Conrad will den Text nun wohl korrigieren), allerdings wirk es für mich eher so, als ob das Ding "nur" über 14 digitale IO-Ports verfügt - siehe Foto anbei. Oder übersehe ich etwas?
Kann ihc problemlos auch einen anderen Arduino verwenden - z.B.: Arduino Board Mega 2560 A000067 (https://www.conrad.de/de/arduino-board-mega-2560-a000067-191790.html)? Oder ist der nicht geeignet? Wird der genauso eingerichtet wie der Uno?
Danke...
Wie viele mehr brauchst denn ? Die A0 - A5 kannst auch Digital benutzen
Der Mega hat natürlich noch wesentlich mehr , must dann halt den auch in der Arduino IDE als Board auswählen.
Ach, tatsächlich. Dann würde es reichen. Das probiere ich gleich mal.
die D Nummern laufen weiter , d.h. A0 = Digital 14 , usw.
Können die Anschlüsse A0-A5 auch als digitale Eingänge verwendet werden?
ja
Zitat von: stobor am 08 Februar 2019, 16:17:37
Können die Anschlüsse A0-A5 auch als digitale Eingänge verwendet werden?
ja (https://www.arduino.cc/en/Tutorial/AnalogInputPins)
Gruß Peter
Mei, seid ihr wieder schnell...
Ergänzend: Es gab auch irgendwo hier einen Thread, der sich mit I2C-Erweiterungsboards im Rahmen von firmata beschäftigt hat - dafür müßtest du aber 2 "analoge" opfern ;) ... (das kann man dann aber uU. kaskaideren)
Ansonsten hilft ggf. auch einfach mal austesten, solche Dinge versteht man m.E. besser, wenn man manches einfach selber mal macht (2. Arduino kaufen und die Standard-Sketche der Reihe mal durchgehen, ggf. mal nachsehen, was so an Sensorik gängig ist (laß DHT11/22 weg) und das austesten. Geht nicht alles mit Firmata, aber die Welt ist ja noch größer. M.E. gute Zusammenstellung: https://www.mysensors.org/build, da dann auf der linken Seite Sensors&Actuators ;) .
Und übrigens: Es gibt auch eine gute Doku zu Arduino auf den Arduino-Seiten (leider englisch), da wäre das auch zu lesen gewesen mit A0.... (Danke Peter für den Link!)
Die "digitalen" Anschlüsse habe ich bisher so eingerichtet:
define Arduino1 FRM /dev/serial/by-id/usb-Arduino__www.arduino.cc__0043_85735313333351709191-if00@57600
attr Arduino1 room ArduinoCPU
attr Arduino1 verbose 4
define Pin13 FRM_OUT 13
attr Pin13 IODev Arduino1
attr Pin13 room ArduinoCPU
attr Pin13 stateFormat value
Mache ich das dann mit den analogen Anschlüssen genauso, wenn sie als Digitale Ein-oder Aus-gänge arbeiten sollen?
Sprich, so:
define Pin14 FRM_OUT 14
attr Pin14 IODev Arduino1
attr Pin14 room ArduinoCPU
attr Pin14 stateFormat value
wenn der Anschluss A0 verwendet werden soll?
Hab's gerade ausprobiert und mir selber beantwortet ;-)
Ja, scheint so zu funktionieren.
Danke für eure schnellen Antworten.
Hat vielleicht noch jemand einen Tipp zu meinem Problem "Thema: Arduino: Status eines Ausgangs ermitteln" (https://forum.fhem.de/index.php/topic,98057.0.html)?