Seriellen Output von Arduino oder Datei einlesen

Begonnen von Schrottpresse, 22 September 2014, 12:11:20

Vorheriges Thema - Nächstes Thema

Schrottpresse

Hallo!

Zuerst: FHEM schaut echt super aus! :)
Bin seit ein paar Tagen am herumprobieren und hab schon z.B. die limitless-RGBW Lampen ansprechbar gemacht - funktioniert soweit ganz gut.

Ich stehe aber ein bisschen an bei einem Problem: Ich bekommen über einen Moteino per Funk (RFM69 868MHz) von einem anderen Moteino Daten eines dort angeschlossenen PIR Sensors geschickt. Für den Anfang wollte ich einfach nur die Nummer des Moteinos übergeben, wo eine Bewegung wahrgenommen wird. Das funktioniert soweit: Wenn eine Bewegung beim Test-moteino ist kann man am Receiver-Moteino, der an einem Raspberry Pi per USB steckt, den /dev/ttyUSB0 eingang auslesen und sieht: 18181818 (also einfach 18 - die Nummer des Moteinos)

Ich habe also jetzt versucht, einen direkten Weg zu finden, die seriellen Daten eines Arduinos auszuwerten und bin dabei auf Firmata und ECMD gestoßen:

Firmata braucht einen speziellen Patch am Arduino, mit dem phsyische Ausgänge (Analog/Digital) ausgewertet werden. Einmal so ausgedrückt: Per Serial.write() ausgegebene Daten kann man dabei nicht auslesen. (oder hab ich was übersehen?)

Für ECMD müsste der Arduino Chip erst mit Ethersex geflasht werden, soweit ich das gesehen habe, wobei ich mir gar nicht sicher bin, ob das dann funktionieren würde.

Gibt es eine direkte Methode, Seriellen Output einer Schnittstelle einzubinden (fortlaufende Updates wie zB. event-on-change-reading, soweit ich das gesehen habe)? Könnte auch eine einfache Datei sein, die auszulesen ist, in die ich den Output von /dev/ttyUSB0 weiterleite.

Vielen Dank und liebe Grüße,
Schrottpresse

ntruchsess

wg. der Firmata: stimmt, bisher ist keine Unterstützung einer arduino-seitigen Seriellen Schnittstelle (SoftwareSerial oder additional Uart beim Mega2560 oder Due) eingebaut. Eine Unterstützung von Serial in Firmata würde erst mal auch nur als IODev für darauf aufsetztende Module dienen können. Es wäre ja nur eine Schnittstelle ohne logisches Protokoll. Also erst mal nicht besser, als eine direkt per FTDI-USB-serial-Adapter realisierte serielle Schnittstelle.

Aber man könnte sich mal überlegen, wieweit man ein eher generisches Modul realisieren könnte, dem man die Protokoll-spezifika per Konfiguration beibringen würde.

Gruß,

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

Schrottpresse

Danke für die Antwort - das wäre sicherlich auf kurz oder lang eine Idee!

Gibt es momentan schon einen anderen weg, zb. Text aus einer Datei sozusagen als Stream ständig einzulesen und in fhem zu verwenden - eventuell als Dummy device das man damit füttert und dann weiter verwendet?

LG Martin

Schrottpresse

Mich überrascht, dass das Thema nicht öfter gefragt wird - kommt es nicht oft vor, dass auch eine Datei zB. ausgelesen und verwertet werden soll?

Ich hab mir gedacht, dass es da sicher schon ein IOModul oder ähnliches geben muss, mit dem man auch, ähnlich wie bei ECMD die classdefs, mit Regex und Perl die brauchbaren Daten filtern und weiterschicken kann.

CQuadrat

Zitat von: Schrottpresse am 22 September 2014, 15:51:26
Gibt es momentan schon einen anderen weg, zb. Text aus einer Datei sozusagen als Stream ständig einzulesen und in fhem zu verwenden - eventuell als Dummy device das man damit füttert und dann weiter verwendet?

Ich greife das nochmal auf, da ich das auch momentan gut gebrauchen könnte und ich mich wundere, dass es da wohl nichts in FHEM gibt (zumindest habe ich trotz intensiver Suche nichts gefunden).

Es wäre bei mir sogar so einfach, dass immer nur genau ein Wert in der Datei steht.

Hat da jemand eine Idee?
FHEM auf Mini-ITX-Server mit Intel Quad-Core J1900:
+ HM: HM-LAN, HM-USB, HM-MOD-UART mit div. HM-Komponenten
+ RFXtrx: Funkwetterstation Bresser mit ext. Thermometer, Regenmesser und Windmesser
+ TUL (KNX-Anbindung), MQTT, SONOS (div. Gimmicks), OneWire, Hue

mani

Hallo könnte so ein Modul auch gut gebrauchen :Dwürde gerne die Serielle Schnittstelle vom Arduino auslesen hat hier schon jemand eine Idee dazu?
Mfg Mani
RasPi B+,Onkyo_AVR,Luxtronik2,Logo7,Mpd,Arduino Uno mit Ethernet,KNX,Jablotron