ESP8266 Configurable Firmata

Begonnen von Familienpapi, 05 November 2015, 14:57:13

Vorheriges Thema - Nächstes Thema

Familienpapi

Hallo, Zusammen,

ich hoffe, ich bin hier im richtigen Teil des Forums.

Mein Ziel ist die Implementierung der Configurable Firmata V2.06 auf den ESP8266 mit Hilfe der Arduino Entwicklungsumgebung 1.6.5.

Vielleicht können wir das in GitHub gemeinsam erledigen. Ich werde das diese Woche noch reinstellen und hier den Link posten. Die Boards.h habe ich bereits angepasst.

Freue mich auf rege Teilnahme.
FHEM@RPi4, piVCCU3@RPi3 (nur Homematic IP), boot via USB NVME SSD, keine SDs,
FTUI 3, HMCCU, MQTT(Mosquitto), MobileAlerts, JeelinkV3c868 (LaCrosse), ZWAVE(+), TelegramBot, eigene Heizungssteuerung, Configurable Firmata
ESP8266 MQTT mit eigener Firmware / Framework

Wzut

Super, bin schon gespannt :)
Aber im Anfängerforum ???? Hätte da eher Bastelecke oder Sonstige Systeme erwartet ...
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Familienpapi

das ganze gestaltet sich dann doch deutlich schwieriger als ich dachte.  :-[

Im Moment scheitert's bereits an den einfachsten Dingen wie z.B. Serial.begin(115200); Schon das funktioniert nicht, geschweige denn die WiFi Definitionen.
Die Firmata kommuniziert im Standard ja seriell entweder über den USB oder über andere Ports mit den aufgesteckten Boards. Das müsste man nun "umbiegen", dass das zukünftig per WiFi gesendet und empfangen wird, oder?

Meine Dateien sind im GitHub. Vielleicht kann da mal jemand mit drüber schauen. Evtl. bin ich jetzt aber auch nach den paar Stunden betriebsblind geworden.

https://github.com/Familienpapi/ESP8266ConfigurableFirmata
FHEM@RPi4, piVCCU3@RPi3 (nur Homematic IP), boot via USB NVME SSD, keine SDs,
FTUI 3, HMCCU, MQTT(Mosquitto), MobileAlerts, JeelinkV3c868 (LaCrosse), ZWAVE(+), TelegramBot, eigene Heizungssteuerung, Configurable Firmata
ESP8266 MQTT mit eigener Firmware / Framework

Nepumuk4321

Hallo Familienpapi,

ja im Standard kommuniziert Firmata über die serielle Schnittstelle (USB und/oder RX/TX). Das mit dem RX-TX ist ja die Lösung aus dem anderen Thread, wo der Arduino über RX/TX den ESP ansteuert.
Im Firmata Sketch kann man aber leicht mittels Ethernet kommunizieren, wenn man
#include <SPI.h>
#include <Ethernet.h>                                     WIZ5100-based ethernet-shield
oder
//#include <UIPEthernet.h>                             ENC28J60 based ethernet-shield
nicht auskommentiert.
Dann kommuniziert er nicht mehr über die serielle Schnittstelle sondern nutzt die Ethernetshields.

Ich glaube der "einfachste" Weg ist wohl, eine dieser Ethernetlibraries anzupassen.
Mir fehlt leider die tiefere C Kenntnis um dich dort intensiv zu unterstützen. :'(

Gruß Frank
FHEM@RPI2, HMUSB; Keymatic;Thermostate (HM-CC-RT-DN); Rolladenaktoren(HM-LC-BI1PBU-FM); 2xConfig-Firmata@ArduinoUno mit Relaisausgängen und DS18B20;Schaltaktor(HM-LC-SW1-BA-PCB); Rauchmelder(HM-SEC-SD); ArduinoNano+ nRF24L01 MySensors;   FHEM@RPI1 als Teststation mit RF1101se@ArduinoNano.....

Nepumuk4321

Hallo,

ich weiß ja nicht ob es hilft, aber ich bin gerade über folgende github Seite gestolpert:

https://github.com/esp8266/Arduino

Wenn man der Anleitung folgt kann man in der Arduino IDE den ESP8266, den NodeMCU und noch ein paar ESP8266 Varianten direkt im Boardsmanager als Variante auswählen.

(//)
FHEM@RPI2, HMUSB; Keymatic;Thermostate (HM-CC-RT-DN); Rolladenaktoren(HM-LC-BI1PBU-FM); 2xConfig-Firmata@ArduinoUno mit Relaisausgängen und DS18B20;Schaltaktor(HM-LC-SW1-BA-PCB); Rauchmelder(HM-SEC-SD); ArduinoNano+ nRF24L01 MySensors;   FHEM@RPI1 als Teststation mit RF1101se@ArduinoNano.....

Familienpapi

Genau. Damit kann man Lösungen ohne einen Arduino schaffen.
Da es off-topic ist nur kurz als Hinweis: Daten vom ESP per MQTT an FHEM übertragen und per HTTP von FHEM an ESP. Funktioniert wunderbar, ist aber individuelle Handarbeit.
FHEM@RPi4, piVCCU3@RPi3 (nur Homematic IP), boot via USB NVME SSD, keine SDs,
FTUI 3, HMCCU, MQTT(Mosquitto), MobileAlerts, JeelinkV3c868 (LaCrosse), ZWAVE(+), TelegramBot, eigene Heizungssteuerung, Configurable Firmata
ESP8266 MQTT mit eigener Firmware / Framework

Cihan

Und schon irgendwie weitergekommen? Firmata auf dem ESP wäre der Ultimative Killer.

http://de.aliexpress.com/item/ESP8266-Serial-Port-WIFI-Wireless-Transceiver-Send-Receive-Module-IO-Lead-Out-ESP-201/32268281500.html?ws_ab_test=searchweb201556_1_79_78_77_91_80,searchweb201644_5,searchweb201560_9

Mein Plan in jeden Rollokasten ein so ein Teil rein. Temp, Fensterkontakt etc. alles sofort drin.
RPi4 Shelly Zigbee

Familienpapi

Bin im Moment dank einiger Kundenaufträge etwas Land unter. Wird wohl im Januar etwas ruhiger werden. Ich bleibe dran.
2 Relais und Temp mit Humi und noch Lux könnte man aber auch mit der IDE schon sehr schnell und zuverlässig lösen.

gesendet mit Tapatalk via Samsung Note

FHEM@RPi4, piVCCU3@RPi3 (nur Homematic IP), boot via USB NVME SSD, keine SDs,
FTUI 3, HMCCU, MQTT(Mosquitto), MobileAlerts, JeelinkV3c868 (LaCrosse), ZWAVE(+), TelegramBot, eigene Heizungssteuerung, Configurable Firmata
ESP8266 MQTT mit eigener Firmware / Framework

2P4u

Hi Leute,
gehts hier irgendwie weiter oder ist das ganze "gestorben"?
1x Ubuntu Server
1x LaCrosse Gateway für PCA301 /1x HMLAN /1x HMLGW
2x HueBridge mit Devices/ 1x Logitech Harmony Ultimate

Familienpapi

Von meiner Seite her besteht kein Bedarf der Weiterentwicklung mehr. Ich bin von Firmata inzwischen ganz abgekommen, da es mir zu unflexibel ist und meine Bedürfnisse nicht mehr deckt.  Habe mir daher mein eigenes Konstrukt geschaffen, das auf ESP und Arduino gleichermaßen für meine Häuser einsetzbar ist, egal ob über RS485 (USB), Ethernet oder WLAN. Der ESP hat auch zu wenig Anschlussmöglichkeiten für die CPU und den RAM, wobei ich hier immer mehr auf reine I2C Bausteine oder entsprechende Adapter übergehe.

Der von mir begonnene Code steht noch auf Github und darf gerne für weitere Entwicklungen übernommen werden.
FHEM@RPi4, piVCCU3@RPi3 (nur Homematic IP), boot via USB NVME SSD, keine SDs,
FTUI 3, HMCCU, MQTT(Mosquitto), MobileAlerts, JeelinkV3c868 (LaCrosse), ZWAVE(+), TelegramBot, eigene Heizungssteuerung, Configurable Firmata
ESP8266 MQTT mit eigener Firmware / Framework

gadget

Hallo,

mir ist nicht ganz klar ob das relevant ist, aber die "normale" Firmata läuft inwischen auch auf einen ESP8266. Ich habe mir mal einen Prototypen gebastelt mit einem "ESP8266 ESP-12E WIFI Development Board" (gibts z.B. bei amazon.de) und auch erfolgreich per Wifi an fhem angebunden und ich kann da dann auch Pins von fhem aus schalten.

Kurz zusammengefasst:ESP mit firmata ESP flashen wie in diesem instructable: http://www.instructables.com/id/ESP8266-Firmata-J5-NodeBot/?ALLSTEPS  ( Johhny Five ignorieren), vorher in der WifiConfig.h die WLAN Zugangsdaten und die IP-Adresse des fhem Servers eintragen.

Auf fhem Seite dann eigentlich nur noch


define ESP_FRM FRM 3030 global
define FRM_D0 FRM_OUT 16
set FRM_D0 off
set FRM_D0 on


und schon kann man die LED an Pin D0 auf dem ESP schalten (allerdings genau anders herum -> off schaltet die LED an)
Digital PINs 12,13,14,15,16 scheinen zu funktionieren, den Rest habe ich nicht probiert.


Was ich eigentlich erreichen will: Anbindung von Sensoren (DS18B20 ("Dallas") und DHT22) - die entsprechende Protokollunterstützung ist aber wohl nur in der "configurable firmata" drin. Wie ich beides unter einen Hut bringe habe ich noch nicht kapiert. Würde mich hier über Ideen freuen.

Ich habe auch schon mit esp easy rumgespielt und auch das mit fhem zum Laufen bekommen. Auf ESP-Seite ist das auch die deutlich hübschere Lösung: Alles per WebGui einstellbar, OTA-Firmaware-Update usw, aber  die fhem Integration über mqtt ist aber für meinen Geschmack ein wenig sehr von hinten durch die Brust. Allerdings funktioniert 1-wire und DHT quasi "out-of-the-box".



Grüße, gadget




Familienpapi

Hallo, Gadget,
klingt gut.
Ich bin inzwischen von Firmata ganz weg gegangen und löse alles mit MQTT (Mosquitto). Da bin ich viel flexibler und funktioniert auch im Echtbetrieb ohne Probleme und Aussetzer. Ist halt Handarbeit und nix out-of-the-box, dafür aber jedes Gerät / jedes Zimmer ganz individuell angepasst. Einzige Ausnahme ist noch der direkt angeschlossene Mega2560 am RPi via USB, der bei mir die Heizung und die dazugehörigen Pumpen und Mischer steuert.
Bin aber trotzdem sehr gespannt, ob man die configurable Firmata dann auch noch auf den ESP bekommt.
FHEM@RPi4, piVCCU3@RPi3 (nur Homematic IP), boot via USB NVME SSD, keine SDs,
FTUI 3, HMCCU, MQTT(Mosquitto), MobileAlerts, JeelinkV3c868 (LaCrosse), ZWAVE(+), TelegramBot, eigene Heizungssteuerung, Configurable Firmata
ESP8266 MQTT mit eigener Firmware / Framework

Familienpapi

grad gesehen aber (noch) nicht getestet:

https://github.com/firmata/ConfigurableFirmata/blob/master/examples/ConfigurableFirmataWiFi/ConfigurableFirmataWiFi.ino

Sollte also nun gelöst sein. Aber sicherlich wird man auch hier die Versionsnummer manuell in src/ConfigurableFirmata.h Zeile 34 bis 36 zurück drehen müssen, da FHEM nur Firmata Versionen bis 2.60 akzeptiert.
FHEM@RPi4, piVCCU3@RPi3 (nur Homematic IP), boot via USB NVME SSD, keine SDs,
FTUI 3, HMCCU, MQTT(Mosquitto), MobileAlerts, JeelinkV3c868 (LaCrosse), ZWAVE(+), TelegramBot, eigene Heizungssteuerung, Configurable Firmata
ESP8266 MQTT mit eigener Firmware / Framework

gadget

Hallo,

interessant ....  :D

Habe die configurable firmata geflasht. Verbindung zu fhem wird aufgebaut.

Internals:
   CFGFN
   CONNECTS   4
   DEF        3030 global
   DeviceName 3030
   FD         94
   NAME       ESP_FRM
   NOTIFYDEV  global
   NR         1984
   NTFY_ORDER 50-ESP_FRM
   PORT       3030
   STATE      Initialized
   TYPE       FRM
   firmware   ConfigurableFirmataWiFi.ino
   firmware_version V_2_09
   Socketdevice:
     BUF
     DeviceName 3030
     FD         95
     NAME       ESP_FRM_192.168.178.65_7500
     NR         2036
     PEER       192.168.178.65
     PORT       7500
     SNAME      ESP_FRM
     SSL
     STATE      Connected
     TEMPORARY  1
     TYPE       FRM
Attributes:
   room       firmata
   verbose    4


Outputs schalten hab ich noch nicht hinbekommen. Wenn ich an einem FRM_OUT  herumschalte sehe ich auch keinerlei Kommunikation wenn ich auf dem fhem Server einen tcpdump host <ip-des-wifi-firmata> laufen lasse.

Das mir dem Ändern der firmware version hab ich auch mal probiert:
/*
* Version numbers for the Firmata library.
* ConfigurableFirmata 2.9.1 implements version 2.5.1 of the Firmata protocol.
* The firmware version will not always equal the protocol version going forward.
* Query using the REPORT_FIRMWARE message.
*/
# FAKING 2.60 https://forum.fhem.de/index.php/topic,43572.0/topicseen.html
#define FIRMATA_FIRMWARE_MAJOR_VERSION  2 // for non-compatible changes
#define FIRMATA_FIRMWARE_MINOR_VERSION  6 // for backwards compatible changes
#define FIRMATA_FIRMWARE_BUGFIX_VERSION 0 // for bugfix releases


... aber hat nichts geändert. Beim Verbindungsaufbau bekommt fhem so oder so V_2_09 -> siehe list oben.

Grüße, gadget.


Familienpapi

Zitat... aber hat nichts geändert. Beim Verbindungsaufbau bekommt fhem so oder so V_2_09 -> siehe list oben.

Meine Erfahrung ist, dass FHEM dann nicht mit der Firmata kommuniziert. Also die Versionsnummer sollte V_2_06 sein.
Mein Mega meldet sich mit einer 2.8 so:
DEF
/dev/ttyACM0@57600

DeviceName
/dev/ttyACM0@57600

FD
4

NAME
FRMA1

NOTIFYDEV
global

NR
152

NTFY_ORDER
50-FRMA1
PARTIAL

STATE
Initialized

TYPE
FRM

analog_pins
54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69

analog_resolutions
54:10,55:10,56:10,57:10,58:10,59:10,60:10,61:10,62:10,63:10,64:10,65:10,66:10,67:10,68:10,69:10

encoder_pins
2,3,18,19,20,21

encoder_resolutions
2:28,3:28,18:28,19:28,20:28,21:28

firmware
ConfigurableFirmata.ino

firmware_version
V_2_06

i2c_pins
20,21

input_pins
2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69

onewire_pins
2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69

output_pins
2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69

pwm_pins
2,3,4,5,6,7,8,9,10,11,12,13,44,45,46

pwm_resolutions
2:8,3:8,4:8,5:8,6:8,7:8,8:8,9:8,10:8,11:8,12:8,13:8,44:8,45:8,46:8

servo_pins
2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49

servo_resolutions
2:14,3:14,4:14,5:14,6:14,7:14,8:14,9:14,10:14,11:14,12:14,13:14,14:14,15:14,16:14,17:14,18:14,19:14,20:14,21:14,22:14,23:14,24:14,25:14,26:14,27:14,28:14,29:14,30:14,31:14,32:14,33:14,34:14,35:14,36:14,37:14,38:14,39:14,40:14,41:14,42:14,43:14,44:14,45:14,46:14,47:14,48:14,49:14

stepper_pins
2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69

stepper_resolutions
2:21,3:21,4:21,5:21,6:21,7:21,8:21,9:21,10:21,11:21,12:21,13:21,14:21,15:21,16:21,17:21,18:21,19:21,20:21,21:21,22:21,23:21,24:21,25:21,26:21,27:21,28:21,29:21,30:21,31:21,32:21,33:21,34:21,35:21,36:21,37:21,38:21,39:21,40:21,41:21,42:21,43:21,44:21,45:21,46:21,47:21,48:21,49:21,50:21,51:21,52:21,53:21,54:21,55:21,56:21,57:21,58:21,59:21,60:21,61:21,62:21,63:21,64:21,65:21,66:21,67:21,68:21,69:21


Wenn also die ganzen Pins nicht aufgelistet werden, dann kann auch nicht kommuniziert werden.
FHEM@RPi4, piVCCU3@RPi3 (nur Homematic IP), boot via USB NVME SSD, keine SDs,
FTUI 3, HMCCU, MQTT(Mosquitto), MobileAlerts, JeelinkV3c868 (LaCrosse), ZWAVE(+), TelegramBot, eigene Heizungssteuerung, Configurable Firmata
ESP8266 MQTT mit eigener Firmware / Framework