FIRMATA I2C Grunglegende Fragen

Begonnen von EnderPhilipp, 13 Januar 2017, 16:25:51

Vorheriges Thema - Nächstes Thema

EnderPhilipp

Hi Liebe FHEM-Community,

ich habe auf meinem Arduino MEGA die Standart Version von Firmata installiert, die funktioniert auch soweit. 8)

Jetzt habe ich 2 Fragen:

1. Kann ich mit Firmata einen IR-Receiver verwenden?

2. Ich wollte ein paar Sensoren per I2C einbinden, genauer den BME280,PN532.
Jetzt steht im commandref bei FRM_I2C :
define <name> FRM_I2C <i2c-address> <register> <bytes-to-read>
Specifies the FRM_I2C device.
i2c-address is the (device-specific) address of the ic on the i2c-bus
register is the (device-internal) address to start reading bytes from.
bytes-to-read is the number of bytes read from the ic


Die I2C Adresse habe ich, aber was ist der Rest?

Würde mich über jede Hilfe freuen.  :D

Mfg
Philipp ;D
¡¡¡ANFÄNGERALARM!!!
Raspberry Pi 3 (Hauptsystem)
Raspberry Pi B+ (Kellersonde)
Homematic,Philips Hue, LD382, nanoCul 433/868mhz, MPD, Intertechno, FIRMATA, EspEasy, SSCAM, STV, HDMI-CEC, EchoDot

klausw

#1
Zitat von: EnderPhilipp am 13 Januar 2017, 16:25:51
2. Ich wollte ein paar Sensoren per I2C einbinden, genauer den BME280,PN532.
Jetzt steht im commandref bei FRM_I2C :
define <name> FRM_I2C <i2c-address> <register> <bytes-to-read>
Specifies the FRM_I2C device.
i2c-address is the (device-specific) address of the ic on the i2c-bus
register is the (device-internal) address to start reading bytes from.
bytes-to-read is the number of bytes read from the ic


Die I2C Adresse habe ich, aber was ist der Rest?

FRM_I2C dient zum senden beliebiger Botschaften an beliebige  lesen von I2C Devices.

Um den BME280 an Firmata in FHEM zu bringen musst du:

1. ein FRM Device anlegen welches mit deinen Firmata kommuniziert
2. ein I2C_BME280 Device anlegen dort gibst du das FRM Device unter dem Attribut IODev ein (wird evtl. automatisch beim anlegen gemacht)

(fast) alle I2C_* Devices können über FRM und RPI2C verwendet werden.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

EnderPhilipp

#2
Zitat von: klausw am 13 Januar 2017, 17:19:05
FRM_I2C dient zum senden beliebiger Botschaften an beliebige I2C Devices.

Um den BME280 an Firmata in FHEM zu bringen musst du:

1. ein FRM Device anlegen welches mit deinen Firmata kommuniziert
2. ein I2C_BME280 Device anlegen dort gibst du das FRM Device unter dem Attribut IODev ein (wird evtl. automatisch beim anlegen gemacht)

(fast) alle I2C_* Devices können über FRM und RPI2C verwendet werden.

Danke für die Antwort,

ein FRM Device habe ich angelegt:
#FIRMATA
define FIRMATA FRM /dev//ttyACM0@57600
attr FIRMATA icon it_net
attr FIRMATA sampling-interval 1000


Und was muss ich tun, wenn ich keinen BME, sondern irgendeinen anderen I2C Sensor, z.B.den Si7021 oder den PN532(RFID-Lesegerät), verwende????

Mfg
Philipp  ;D
¡¡¡ANFÄNGERALARM!!!
Raspberry Pi 3 (Hauptsystem)
Raspberry Pi B+ (Kellersonde)
Homematic,Philips Hue, LD382, nanoCul 433/868mhz, MPD, Intertechno, FIRMATA, EspEasy, SSCAM, STV, HDMI-CEC, EchoDot

klausw

Zitat von: EnderPhilipp am 13 Januar 2017, 17:41:29
ein FRM Device habe ich angelegt:
#FIRMATA
define FIRMATA FRM /dev//ttyACM0@57600
attr FIRMATA icon it_net
attr FIRMATA sampling-interval 1000


Und was muss ich tun, wenn ich keinen BME, sondern irgendeinen anderen I2C Sensor, z.B.den Si7021 oder den PN532(RFID-Lesegerät), verwende????

Also das ist ein Tippfehler:
/dev//ttyACM0@57600     ->          /dev/ttyACM0@57600
so dürftest du keine Verbindung zu Firmata haben
Ich würde empfehlen unter /dev/serial/by-id/ nach der Passenden Schnittstelle zu suchen. es ist nicht sicher das es immer die ttyACM0 bleiben wird.

Wenn ich nix durcheinander bringe ist der SHT21 mit dem Si7021 kompatibel.
Für I2C Geräte die kein Modul in FHEM haben darf jeder selbst ein Modul schreiben 8).
Unterstützung gibt es natürlich.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

EnderPhilipp

#4
Also folgendes kommt bei ls -l /dev/serial/by-id/


pi@raspberrypi:~ $ ls -l /dev/serial/by-id/
insgesamt 0
lrwxrwxrwx 1 root root 13 Jan 13 16:12 usb-Arduino__www.arduino.cc__Arduino_Mega_2560_95437313035351D0F140-if00 -> ../../ttyACM0
lrwxrwxrwx 1 root root 13 Jan 12 18:17 usb-FTDI_FT232R_USB_UART_A505MPNF-if00-port0 -> ../../ttyUSB0
lrwxrwxrwx 1 root root 13 Jan 12 18:17 usb-FTDI_FT232R_USB_UART_A505MQ0Z-if00-port0 -> ../../ttyUSB1


ttyUSB0 & ttyUSB1 sind meine SelbstbauCULs.   :)

Ein Modul schreiben ist (noch) zu schwer für mich, dann lege ich meinen PN532 wieder zu Seite. Brauche den sowieso nicht wirklich.  ;D
¡¡¡ANFÄNGERALARM!!!
Raspberry Pi 3 (Hauptsystem)
Raspberry Pi B+ (Kellersonde)
Homematic,Philips Hue, LD382, nanoCul 433/868mhz, MPD, Intertechno, FIRMATA, EspEasy, SSCAM, STV, HDMI-CEC, EchoDot

Beta-User

Evtl. könntest Du statt firmata auch ein anderes Protokoll nehmen, um Deine Ziel zu erreichen (IR + i2c).

Dafür käme z.B. MySensors in Frage: "Einfach" den Mega als GW definieren, dabei keine Funk-Übertragung definieren und dann die "Treiber" für Deine Sensoren in den Arduino-Code reinkopieren. Dazu solltest Du Dir mal die Beispiele auf der Seite unter Build ansehen, insbesondere den BMP180-Sketch; vielleicht kannst Du damit was anfangen...

IR ist deutlich schwieriger, weil das Decoding mit auf den Arduino sollte, aber auch das geht (die verwendete Lib bei MySensors ist aber nicht wirklich gut in der Erkennung vieler IR-Codes). Bei Bedarf melden ;).

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

EnderPhilipp

Also ich habe noch ein anderes interessantes Projekt gesehen: ArduinoEasy

Das ist von den machen von EspEasy, ich weiß nur nicht in wiefern das FHEM kompatibel ist, außerdem bin ich zu *** das auf den Arduino zu kriegen.


Mfg
Philipp ;D
¡¡¡ANFÄNGERALARM!!!
Raspberry Pi 3 (Hauptsystem)
Raspberry Pi B+ (Kellersonde)
Homematic,Philips Hue, LD382, nanoCul 433/868mhz, MPD, Intertechno, FIRMATA, EspEasy, SSCAM, STV, HDMI-CEC, EchoDot

EnderPhilipp

Hat da irgendwer Erfahrung mit, oder kennt wer noch Alternativen?   :)
¡¡¡ANFÄNGERALARM!!!
Raspberry Pi 3 (Hauptsystem)
Raspberry Pi B+ (Kellersonde)
Homematic,Philips Hue, LD382, nanoCul 433/868mhz, MPD, Intertechno, FIRMATA, EspEasy, SSCAM, STV, HDMI-CEC, EchoDot

Beta-User

Zitat von: EnderPhilipp am 13 Januar 2017, 18:16:48
Also ich habe noch ein anderes interessantes Projekt gesehen: ArduinoEasy
Hi Phiipp,

das kenne ich noch nicht, es dürfte aber etwas anderes sein als ESPEasy (wo es derzeit wohl auch nicht so recht weitergeht).
Es dürfte daher auch noch keinen Weg geben, die vom Arduino kommenden Informationen in FHEM auszuwerten (wie bei firmata, wo es noch keine Protokolle gibt).

Daher die Empfehlung mit MySensors: Dort ist die Implementierung von Standard-Sensoren kein Problem, sobald an der USB-Schnittstelle was entsprechendes ausgegeben wird. Irgendwo hakt es halt immer, ganz "von der Stange" geht halt dann doch nicht so einfach, wenn man selber bauen will.

Arduino mit der Arduino-IDE flashen ist aber nicht besonders schwer: Nimm doch einfach mal den MySensors-Sketch für den BMP180, schließ den Sensor nach Bauplan an, deaktiviere den NRF-Teil (ein doppelter Slash (//) vorne in die betreffende Zeile ziemlich oben), und Du kannst direkt an der seriellen Konsole (zu aktivieren in der IDE) sehen, was der als Sensor-Node verschickt....

Na ja, mußt Du selbst wissen ;D.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors