Hallo liebe FHEM Gemeinde,
da ich bei meiner bisherigen Suche leider kein Ergebnis gefunden habe hoffe ich hier auf Hilfe.
Ich würde gerne mein Arduino Pro Mini mit ESP 8266 in FHEM einbinden. Leider habe ich bisher keine Möglichkeit gefunden wie ich die Pins des Arduino in der Kombination ansteuern kann. Toll wäre ähnlich wie im aktuellen Modul den Status der Pins des Arduino abfragen zu können und diese Werte dann in FHEM zu verarbeiten.
Das was meiner bisherigen Suche am nächsten gekommen ist, ist das Firmata FHEM Modul. Leider ist dort der günstige ESP 8266 noch nicht implementiert. Was bisher schon klappt ist einzelne Anfragen über den ESP an einen Host zu schicken. Leider weiß ich nicht wie ich diese in FHEM verarbeiten könnte.
Da ich die Sensoren und den Arduino Pro Mini gerne per Batterie betreiben würde, und das WLAN Modul recht Stromfressend ist strebe ich eine Lösung an , in der das Modul kurz aufwacht die Sensoren ihre Werte schicken und wieder schlafen gehen.
Jemand Hinweise die mich auf meiner Suche unterstützen?
Danke schon mal für die Hilfe
Liebe Grüße Daniel
Hallo,
Du bist einige Wochen zu früh. Ich beschäftige mich auch mit dem Thema, habe es aber aus Zeitmangel verschoben. Ich versuche mit Arduino Nano, ESP8266 und WS2812B-Strip eine Statusanzeige zu bauen. Und wenn ich dann anfange, wird es bestimmt etwas dauern. Hatte gestern zu ersten Mal einen Arduino in der Hand.
Die Idee ist auf dem ESP8266 den Webserver zu starten, Daten mittels FHEM system-Kommando zu übergeben, der Nano wertet aus und schaltet die WS. Später dann auch der umgekehrte Weg, um an FHEM state zu senden.
Vielleicht hilft Dir das für den Weg FHEM > Arduino: http://www.forum-raspberrypi.de/Thread-uart-esp8266-raspberrypi?pid=122103#pid122103
Ist zwar für einen RasPi, sollte aber ähnlich auf dem Arduino funktionieren.
Über Strom sparen habe ich mir keine Gedanken gemacht. Durch den LED-Einsatz wird die Anzeige über ein Netzteil versorgt.
MfG
Vielleicht wäre ein panstamp eine gute Alternative. Ist vor allem Stromsparend.
Gesendet von meinem Nexus 4 mit Tapatalk
Erstmal Danke fürs Antworten. Zum Thema Panstamp, den hatte ich auch zuerst im Blick heißt aber wieder erneut ein Stick am Server.
@Ralf W. Das wäre natürlich toll, was ich gerade nicht verstehe, ist das wenn mal angenommen das Firmata Protokoll liefe - würdest du dir den Umweg um den Webserver sparen können und per PWM direkt aus FHEM die Pins für die WS2802 ansteuern können. Wenn du dort den PowerDown Modus ausstellst, auch Bidirektional. Sonst korrigiere mich gerne, ich lerne noch.
@breezybadger
Ich kenne aktuell Firmata noch nicht. Kann Dir deshalb dazu keine Antwort geben. Sehe ich mir an. Aber wie geschrieben, kann noch dauern.
Mir ist in dem Zusammenhang noch eine Seite eingefallen: http://www.cse.dmu.ac.uk/~sexton/ESP8266/ (http://www.cse.dmu.ac.uk/~sexton/ESP8266/)
MfG
Hi,
Schau dir das mal an https://github.com/n800sau/ESP8266-transparent-bridge.
Damit hatte ich schon erfolgreich meinen Firmata-Arduino mit Fhem verbinden. Dazu musst du im define einfach als Schnittstelle deine ip und den port angeben bei dem oberen Quellcode ist es Port 23.
Wenn alles verkabelt und verbunden ist musst du übers webinterface set firmata reinit bzw set firmsta reset versuchen. Danach war mein Arduino erfolgreich verbunden. Allerdings nicht lange. Die Verbindung ist nicht sonderlich stabil.
Ich bastele derzeit an einer firmata Version die über den esp8266 einen udp Server bereit stellt. (Ein weiterer esp8266 wird gerade zum HomeMatic Status Display, der läuft stabil. Allerdings schicke ich dem direkt die anzuzeigenden Farbe Werte als udp-datagram. Dafür spare ich den arduino ein)
Allerdings habe ich noch keine Idee wie ich fhem beibringen kann die firmata Befehle per udp zu versenden.
Gruß,
Stephan
Gesendet von meinem Galaxy Tab 4 LTE mit Tapatalk
@CaptainHook
Auf Anhieb fällt mir zu UDP folgenden des ein:
echo -n "hello" >/dev/udp/IP-des-esp8266/Port-des-esp8266
Hast Du nähere Infos zu Deinem Statusdisplay?
MfG
Gesendet von meinem Lenovo B6000-H mit Tapatalk
Hi,
Das Senden von UDP Paketen ist weniger mein Problem ;).
Ich habe versucht die Firmata implementierung von FHEM zu verstehen (/opt/fhem/FHEM/lib/Device/Firmata.pm o.ä.)
Dort gibt es bisher 2 Funktionen ..listen und open soweit so gut. Nun würde ich jetzt ferm gerne beibringen das er die Firmata befehle nicht auf die Serial-Schnittstelle schreibt sonder als UDP an mein ESP8266 sendet. Leider habe ich derzeit nur wenig Zeit und nutzte diese Aktionen eher als Entspannung um abzuschalten ....
Wenn auch etwas OffTopic zum StatusDisplay:
Ich nutze ne modifizierte Version Variante von diese Software https://github.com/gmorell/ws2812esp8266.
Und meiner 99_myUtils.pm habe ich das Senden beigebracht. Ist alles noch in einem sehr frühen Stadium aber es funktioniert.
Die Funktion Wird über ein "at" alle 60Sekunden ausgeführt...
###### ESP8266 SendStates ######
use Try::Tiny;
use IO::Socket::INET;
#SendStateToESP8266 ("10.0.0.106","7777")
sub SendStateToESP8266
{
my ($socket,$data, $ip, $port);
my (@Windows);
$ip = shift;
$port = shift;
$data = "0000AA";
@Windows = ("RHS_Arbeitszimmer",
"RHS_Balkon",
"RHS_Kueche",
"RHS_Schlafzimmer_L",
"RHS_Schlafzimmer_R",
"SC_Eingang");
# We call IO::Socket::INET->new() to create the UDP Socket
# and bind with the PeerAddr.
try
{
$socket = new IO::Socket::INET (
PeerAddr => "$ip:$port",
Proto => "udp"
) or die "ERROR in Socket Creation : $!\n";
foreach my $Window (@Windows)
{
$data .= WindowsStateToColor ($Window);
}
$data .= "0000AA";
#data perperation
$data =~ s/ //g;
$data = pack('H*', $data);
#send operation
$socket->send($data);
sleep(1);
$socket->close();
Log 1, "SendStateToESP8266 success!";
}
catch
{
Log 1, "SendStateToESP8266 IO::Socket::INET returned: $_";
};
}
###############################
use Switch;
sub WindowsStateToColor
{
my($Device, $Value, $Return);
#Color definiition in GBR for WS2112b strip
#rrggbb
#cd3232 red
#0c8703 green
#c7ad05 yellow
my($Open, $Tilted, $Close, $Undef) = ("32cd32","adc705","870c03", "c9c9c9");
$Device = shift;
$Value = ReadingsVal($Device,"state","undef");
Log 1, "Value $Device of is $Value";
switch (lc $Value)
{
case "open" { $Return = $Open; }
case "closed" { $Return = $Close; }
case "tilted" { $Return = $Tilted; }
else { $Return = $Undef; }
}
return $Return;
}
###############################
€dit: Vergest was ich gestern geschrieben habe. zum Thema firmata. Es könnte einfacher sein als geglaubt.
Wenn ein Firmata-Device als Netzwerk definiert wird öffnet FHEM einen TCP Port und wartet bis sich ein Netzwerk-Arduino-FIRMATA verbindet.
Das versuche ich jetzt mit einem ESP8266 zu realisieren. Arduino->Esp(TCP Connection to FHEM)->FHEM.... soweit der Plan
Klasse, Danke für den Input.
@CaptainHook, habe ich das richtig verstanden: Wenn du mit deinem Projekt fertig bist, lässt sich das FHEM Modul(http://www.fhemwiki.de/wiki/Arduino_Firmata) wie beschrieben nutzen?
Ich dachte es sei mit relativ wenig Aufwand verbunden die vorhanden Firmata Software so zu modifizieren, dass es anstelle eines Ethernet einfach den ESP anspricht. Da lag ich wohl falsch, aber genau daran arbeitest du gerade oder?
Es ist noch so viel für mich zu lernen, danke fürs Helfen.
Hi,
genau das ist der Plan. Ich wollte die ConfigurableFirmata anpassen....
mal seh'n wie weit ich heute abend/nacht komme.
Der ESP soll dabei mit der "Standard" AT-Firmware laufen. Der Arduino macht den Rest.
Grüße
Stephan
Das ist genau was ich suche. Ich bin sehr gespannt!
Hi,
Zwischenstand:
für heute gebe ich auf!!!! Das Teil mach mich verrückt....
Ein Testprogram funktioniert soweit gut,
Wenn ich dann alles in Conf-firmata rein flickel .. läuft mal GARNICHTS :'(
Als Grundlage für die ESP8266 implemtierung dient das hier https://github.com/INEXTH/Arduino-ESP8266_libs (https://github.com/INEXTH/Arduino-ESP8266_libs)
Allerdings ist wenn ich alles soweit drin hab der Speicher auch schon übervoll!! Ergo man muss einiges weglassen.
Ergo zurück auf Anfang..neuer Plan:
Der ESP8266 verbindet sich selbstandig und gibt die Befehle an den Arduino weiter
[Ganz so wie es die transparent Bridge machen sollte, aber der ESP baut die Verbindung auf statt nur ein Socket bereit zu stellen ... ]
Vorteil, keine Quellcode auf dem Arduino ergo kann die Conf-Firmata Vollständig drauf... mal sehn was der Tag so bringt
Grüße
Stephan
Hallo Stephan,
das klingt doch nach einen sehr guten Fortschritt. Ich habe soviel Projekte die damit so einfach werden würden.
Auch hier kommt wieder meine Unwissenheit aber wäre folgender Weg nicht möglich ( und Platzsparend)
Du schaust dir an, welche Befehle FHEM sendet und "erwartet" und baust die aus den Firmata Protokoll nach für den ESP? Dann kannst du die Implementierung von Ethernet usw komplett entfernen.
Ist nur eine Idee, aber du wirkst schon sehr so, dass du weißt was du tust. Ich freue mich wenn du mich auf dem laufenden hälst.
Beste Grüße Daniel
Hi,
Nummer 5 lebt !!!!! Ich hab es soweit geschafft! Im Anhand ist die Software für den ESP8266 >> Quick'n'Dirty - schön war aus! <<
Wie es funktioniert.
Der ESP baut eine TCP verbindung auf zu FHEM. DEr ESP ist mit einem "normalen" FIRMATA-Arduino verbunden über RX und TX.
Alle Befehle von FHEM werden über die UART an den Arduino weitergeleitet und umgekehrt.
HowTo Build:
Meine ToolChain bassiert auf folgenden Wiki https://github.com/esp8266/esp8266-wiki/wiki (https://github.com/esp8266/esp8266-wiki/wiki)
Das MakeFile im tar-Archiv sollte 100% kompatibel sein.
WLAN Einstellungen Server-IP und Port wird in user/user_config.h konfiguert.
dann reich ein make und ein make flash und der ESP ist auch schon fertig
Dann wird das Ganze verkabelt
VCC 3,3V
RST&CH_PD gehen auf 3,3V
RX --> TX-Arduino (ggf über LevelShifter da der ESP nicht 5V kompatibel ist!!!!!)
TX --> RX-Arduino (ggf über LevelShifter da der ESP nicht 5V kompatibel ist!!!!!)
GND GND
GPIO0 bleib in der Luft hängen.
GPIO2 gibt einen 0.5Sec puls aus diese kann eine LED zum blinken bringen (+ ---RRR----|<----GPIO2) den nutze ich um zu sehen das der ESP noch lebt.
Die 3,3V Spannungs versorgung sollte vernünftig sein die 3,3V der Arduino (vom FDTI-Chip sind NICHT ausreichend)
Ich nutze daher einen 3.3V LDO (AMS1117-3.3) um mir aus den 5V eine ordentliche 3,3V Versorgung zu machen.
Im Bild kommen die 5V von einem PC-Netzteil, dieses versorgt den Arduino und den ESP.
Alles ohne Gewähr!
Viele Grüße,
Stephan
(Weiter zum "Nicht Homematic"-StatusDisplay)
Edit: Jetzt auch Hier: https://github.com/CaptainRoot/ESP8266_Transparent_TCP_Client_Bridge
Ganz großes Kino!!!! So genial, vielen Dank! Ich teste es Morgen
Hi
Ein Problem habe ich noch gefunden.
Nach dem start müllt der esp8266 erst mal die Serielle Schnittstelle voll.. Das überfordert den Arduino völlig. Daher habe ich den Quellcode erweitert. GPIO0 resetet den arduino im init-Prozess. Die Änderungen füge ich noch den git hinzu.
Als Workaround hilft es nach dem starten des Systems den Arduino zu resetten
Grüße
Stephan
Gesendet von meinem Galaxy Tab 4 LTE mit Tapatalk
Hallo Stephan,
bevor ich wieder irgendwas vermurkse. In der Uferfile bleiben die " " erhalten? Der Serverport ist frei wählbar und muss ich nachher nur über das Modul FRM in FHEM definieren oder?
Als Arduino Sketch nimmst du den Configurable Firmata Sketch aus dem Wiki oder?
Ich habe mich bisher drum gedrückt den ESP zu Flashen da die lötarbeitend echt unangenehm sind. Aber das werde ich dann Heut mal versuchen.
Also die angehängte Datei nicht Flashen?
Liebe Grüße
Daniel
Hi
Ja die "" bleiben. Die Dateien im Anhang kannst Problemlos nehmen und später nochmal updaten.
Der Port ist frei wählbar und wird später in FHEM definiert.
Was musst du den löten? Welches esp-Modul hsst du den?
Grüße Stephan
Gesendet von meinem Galaxy Tab 4 LTE mit Tapatalk
Hallo Stephan,
ja ich bin gerade dabei das von dir gepostete Wiki zu durchforsten um rauszufinden ob ich das von MAC bzw Windows flashen kann.
Ich habe den ESP-04 ( http://www.tinkerelectric.com/wordpress/wp-content/uploads/2014/12/Screen-Shot-2014-12-21-at-11.46.56-pm.png)
Liebe Grüße
Daniel Orth
Hi,
ok aber löten musst bei dem Modul ja sowieso, und alle Kabel brauchst nachher ja auch wieder für den Arduino.
Ich nutze die Linux-Toolchain in einer VM.
Alternativ gibt's noch das hier für Windows http://www.esp8266.com/viewtopic.php?f=9&t=820
Dafür müsstest du aber das Makefile anpassen.
Irgendwo im Netz geistert auch ne Fertige VM herum ....
Gruß Stephan
Das ist wirklich ganz großes Kino. Vielen Dank an Stephan.
Funktioniert bei mir nun auch. Mein Problem war, dass der ESP nicht mehr die Original Firmware drauf hatte. Nachdem ich die Original 0.92 AT-Firmware geflasht hatte, gab's keine Probleme mehr. Habe das ganze an einem Arduino Nano mit configurableFirmata V2.06 und allen Optionen aktiviert angeschlossen. Vorsichtshalber habe ich den TX des Nano über einen 1kOhm, 2kOhm Teiler an den ESP angeschlossen. Der ESP mag keine 5V Signale.
Nun habe ich aber doch noch eine Kleinigkeit fest gestellt. Sobald FHEM neu startet (z.B. shutdown restart), verbindet sich der ESP nicht mehr. Im FHEM steht dann nur noch listening. Wie kann ich den ESP dazu bringen, dass er sich wieder mit FHEM verbindet? Man muss den ESP nach einem Neustart von FHEM resetten, damit es wieder funktioniert. Möchte nicht durch das Haus laufen und alle ESPs mit Arduinos, die ich noch verteilen möchte, neu starten.
[Noch eine andere Kleinigkeit: Gäbe es die Möglichkeit, die MAC Adresse des ESP beim Initialisieren zu definieren? Man könnte dann über DHCP feste IPs vergeben. (nice-to-have)]
bin fündig geworden:
In der user/client.c die Funktion networkDisconCb suchen (bei mir Zeile 47) und so erweitern:
void ICACHE_FLASH_ATTR networkDisconCb(void *arg)
{
//uart0_tx_buffer("dcon",4);
os_timer_disarm(&network_timer);
os_delay_us(20000000); //20000ms = 20sec!
network_init();
}
Nachdem der ESP zu schnell verbinden wollte und FHEM dann in ein Fehler lief, habe ich noch die Wartezeit integriert.
kannst du bitte ein tut dazu machen?
Hi,
ich habe die änderung von Familienpapi ins git übernommen.
Mir ist am Wochenende aufgefallen das sie aktuelle Conf-Firmata einen fehler enthält, diese läuft bei mir weder mit USB noch "wireless". Ob es an FHEM oder der Firmata-Version liegt kann ich nicht sagen.
ein Downgrade auf eine alte Version brachte den gewünschten Erfolg.
Grüße,
Stephan
Hallo,
das Thema Arduino - Conf-Firmata über Esp8266 ist genau das was ich suche / brauche.
Leider läuft es bei mir nicht richtig, deshalb hätte ich ein paar Fragen.
1. in der user_config.h trage ich als SERVERIP die Adresse meines Fhem-Servers ein (bei mir ein Raspberry Pi 2) ?
2. Du schreibst das es mit der neuesten Version der conf-Firmata nicht lief, wo hast du denn die ältere gefunden, oder was hast du downgegraded?
3. Die con-firmata die im Arduino läuft muss doch auf serielle Kommunikation eingestellt sein (nur weil du schreibst weder usb noch wireless)?
4. Wie muss der ESP am Arduino angeschlossen sein (nur RX und TX oder auch noch GPIO0 und GPIO2)?
5. Ich verwende einen ESP-01 und einen Arduino Nano, spricht da was dagegen?
Ich sehe den ESP-01 gar nicht in der WLAN Teilnehmerliste meiner Fritzbox, ich gehe davon aus, dass das mein Hauptproblem ist. Hab zwei ESP's bei beiden das gleiche. Das flashen läuft aber sauber durch.
Wenn einer eine Idee hat, woran es liegen kann, wäre ich echt happy.
Vorab schon mal Danke und großes Lob an dich CaptainHook, dass du die Sache angegangen bist!
Gruß
Frank
Hallo,
Angesichts der Uhrzeit kurze Antworten:
Läuft nicht richtig, ist sehr weit dehnbar. Was konkret läuft nicht?
1. Korrekt. Dein define in FHEM ist wie?
2. Ich habe noch die V2.06 bei mir im Einsatz. Habe diese jetzt aber nicht so schnell finden können. Mein Bookmark hat den Download nicht mehr.
3. Korrekt. Ganz normale Kommunikation als ob der USB einsteckt wäre. Ist er aber hoffentlich nicht.
4. Einer der beiden GPIOs muss am den Reset des Arduinos. In der Github steht das genau drin.
5. Funktionierte bei mir mit 01 und 07 an einem Nano und Mega 2560.
Wenn Du den ESP schon gar nicht siehst, dann stimmt grundsätzlich etwas nicht. Hast Du die Original AT Firmware zuerst geflasht und dann beide Parts aus dem make an der korrekten Adresse? SSID und Passwort Deines WLANs korrekt eingetragen? Dein WLAN lässt neue Geräte zu?
Das mal als ein paar Gedanken auf die Schnelle.
Hallo Familienpappi,
danke für die schnelle Antwort.
Mein Fhem define ist: "define arduinoTest frm 3033 global"
den Port 3033 habe ich auch im user_config.h eingetragen.
Das der USB Anschluss ab muss, war mir nicht klar. Habe ich aber auch schon mal probiert.
Soweit ich mich erinnere, hab ich auch die conf-firmata 2.06 (die habe ich zumindest bei meinen anderen Arduinos mit verkabeltem LAN drauf).
Ich hatte die Original AT Firmware vorher nicht geflasht. Habe ich eben gerade versucht bekomme aber Fehlermeldungen beim make:
"/bin/sh: 2: xt-xcc: not found"
verstehe ich nicht, da das make bei CaptainHook's build durchläuft und auch die bin dateien erzeugt (ich hatte sie extra gelöscht, zur Kontrolle)
Kann aber sein, dass ich einen Fehler in meinem System habe. Ich habe in einer Nachtaktion eine virtuelle Maschine mit Ubuntu aufgesetzt, dann die toolchain abgearbeitet und die den Esp geflasht, war vielleicht zu sehr hopplahopp.
Da ich morgen (bzw. heute) wieder früh raus muss, werde ich die Suche erst heute abend wieder fortsetzen.
Werde auf jeden Fall versuchen zuerst die Original AT Firmware aufzuspielen und mit AT Befehlen in mein Wlan zu kommen. Hoffe es gelingt mir :) und dann mal weiterschauen.
Gruss
Frank
Hi,
ich nutze auch noch eine alte toolchain 094 oder 095 meine ich zumindest. du solltetst zuerst versuchen, dass du einmal die AT-Firmware flasht. Wie Familienpapi schon sagte funktioniert sonst die client-bridge nicht.
Wenn du die Firmware (client-bridge) geschlasht hast dolltest du den ESP in der fritzbnox sehen oder zumindest anpingen können.
Der ESP läuft auch ohne angeschlossenen Arduino.
Btw: Nutzt ihr einen LevelShifter oder wie habt ihr die Pins vom ESP mit den Arduinos verbungen?
Ich nutzt 3,3V Arduinos mit 8Mhz, aber sowohl der Nano als auch der Mega nutzen 5V, laut datenblatt verträgt das der ESP nicht ???
Grüße,
Stephan
Vom TX des Arduino einen 1k Widerstand dazwischen reicht aus.
Hallo,
bin jetzt schon weiter, aber noch nicht glücklich.
1. Beim Compilieren (make) des Esp8266-Transparent-Client..... habe ich die folgende Fehlermeldung bekommen:
user/client.c: In function 'networkDisconCb':
user/client.c:131:1: error: expected declaration or statement at end of input
}
Ich habe dann in der client.c eine der beiden "{" gelöscht:
void ICACHE_FLASH_ATTR networkDisconCb(void *arg)
{
{
//uart0_tx_buffer("dcon",4);
// Thank to Familienpapi@FHEM-Foum
os_timer_disarm(&network_timer);
os_delay_us(20000000); //20000ms = 20sec!
network_init();
}
danach hat das "make" funktioniert. Das hatte ich gestern auch schon, wollte nur mal bescheid sagen. Oder läuft bei mir was schief?
2. Ich habe auf beide ESP-01 'en die ich habe die AT Firmware draufbekommen, habe sie auf CWMode=3 gesetzt. AP war zu sehen und
Client hat sich an meiner Fritte angemeldet.
3. Nachdem ich dann die Esp8266-Transparent-Client.... Firmware draufgespielt habe, ist der ESP nicht mehr im Netzwerk zu finden (auch
nach mehrmaligem reseten usw nicht). Hab's probiert mit Anschluss an den Arduino mit Conf-Firmata und nur mit Spannungsversorgung.
Bin jetzt ein bisschen ratlos, was ich noch machen kann.
4. die user_config.h sieht so aus:
#define SSID "Spezialnetz"
#define SSID_PASSWORD "meinPasswort"
#define SERVERIP "192.168.1.21" =Ip meines Fhem Raspberrys
#define SERVERPORT 3030
zu meiner Config:
ich flashe die ESP's über einen Arduino Nano (RST auf 0V) mittels ein Ubuntu VM (VirtualBox). Ich benutze einen Levelshifter.
Fhem habe ich auf einem Raspberry 1 laufen, ist eine Teststation. Mein LiveSystem läuft auf einem Raspberry 2.
Die ESP mit AT Firmware teste ich mit Esplorer (nicht Explorer) unter Windows.
Falls noch jemand eine Idee hat, was ich noch ändern oder ausprobieren kann, wäre ich froh.
Gibt es vielleicht eine Möglichkeit, die IP Adresse in der Esp8266-Transparent-Client.... Firmware statisch zu setzen? Ich habe irgendwie das Gefühl, dass das mit dem DHCP nicht funktioniert. Ich finde zwar die Stelle, wo die IP abgerufen wird, weiß aber nicht, wie ich das ändern könnte.
Gruß Frank
P.S.: Eine Led an GPIO2 angeschlossen blinkt wie angegeben im ca. 0,5 sec Takt (hab es jetzt nicht gestoppt).
Klingt ein wenig seltsam. Ich versuche mal, den Knoten zu lösen:
1. Die Klasse networkDisconCb sieht in Deinem Post gut aus.
2. Es handelt sich bei der Original Firmware um die 0.92 (ESP_8266_BIN0.92.bin). Schon mit der 0.95 funktioniert die chain nicht mehr.
3. Das Flashen funktioniert mit RST=0V aber nicht. Da ist der ESP die ganze Zeit im Reset Zustand und läuft gar nicht. Um den 01'er zu flashen lässt man GPIO2 offen, GPIO0 auf Masse, RST kurz auf Masse (Pull-Up-Widerstand auf Vcc3) und dann GPIO0 offen. Während dem Flashen muss die blaue LED am ESP flackern.
Dass die LED an GPIO2 dann nach dem ganzen Chaos doch blinkt, ist schon verwunderlich. Die blinkt eigentlich erst, wenn eine WiFi Verbindung besteht (wenn ich den Code richtig verstanden habe).
4. Die ServerIP ist die IP des FHEM Servers. Also auch hier korrekt.
Die WLAN IP des ESP kann man im DHCP Server statisch setzen = reservieren. Auf die Art und Weise hat man einen Ort, an dem die IPs vergeben werden und durch die Reservierungen erhält jeder ESP seine eigene eindeutige IP. Bei mehreren Geräten im Netzwerk wird so eine Doppelbelegung effektiv vermieden.
PS: Vielleicht mal grundsätzlich darüber nachdenken, wieviele GPIOs Du für Dein Projekt benötigst. Ich bin inzwischen bei einer reinen ESP-Lösung per MQTT und WebServer mit HTTP-GET gelandet. Der 07'er und der 201'er sind hier sehr empfehlenswert. Das wäre dann aber eine andere Baustelle und gehört hier nicht mehr rein.
Hallo,
jetzt bin ich der Lösung aber schon ein gutes Stück näher! Danke Familienpappi!
Ich bin sicher es liegt an der ESP Originalfirmware. Ich habe die "at_v0.19_14_10_30.zip" von hier https://github.com/esp8266/esp8266-wiki/tree/master/sdk (https://github.com/esp8266/esp8266-wiki/tree/master/sdk) genommen.
Wo bekomme ich die ESP_8266_BIN0.92.bin denn her, hast du vielleicht einen Link? Habe sie hier gefunden: https://drive.google.com/folderview?id=0Bw7HZpJSTfpcb1JFQ3ZYY3JqUHc&usp=sharing (https://drive.google.com/folderview?id=0Bw7HZpJSTfpcb1JFQ3ZYY3JqUHc&usp=sharing)
Zu deinem Punkt 3.: ich habe den RST des Arduinos auf 0V, dadurch ist der Atmel Prozessor tot und die Signale des USB Seriell Wandlers gehen direkt an RX/TX. Der Arduino Nano wird damit zum reinen USB / Seriell Wandler.
Den Esp habe ich dabei nur mit RX/TX mit dem Arduino verbunden und die anderen Anschlüsse auf dem Potential, wo sie hingehören. Also das flashen funktioniert ohne Probleme.
Bis daraufhin, das es ich den Levelshifter dann rausholen muss. Mit dem Levelshifter geht das Flashen nicht , weiß auch nicht warum,soll hier als Hinweis an Mitleser gelten. Hat mich auch ein paar Stunden gekostet das herauszufinden.
Die andere von dir vorgeschlagene Lösung ist auch sehr interessant, aber da fehlen mir Fhem-seitig noch ein paar Grundlagen. Firmata ist auf der Fhem Seite schon super einfach.
Parallel bin ich noch an einer Lösung mittels RF1101se und ich habe noch ein paar Wino-Boards (http://www.wino-board.com (http://www.wino-board.com)) hier rumliegen, mit denen will ich auch noch spielen :)
Letztlich ist für all diese Lösungen der Anschluss an Fhem die größte Hürde für mich.
Habe mir aber schon mal zwei ESP-12e und einen NodeMcu in China geordert um bei dem Thema weiter zu machen. Ich hoffe, dass ich das aktuelle Problem gelöst habe bis die Teile eintreffen ;)
Gruß
Frank
So jetzt verliere ich langsam die Lust weiter zu machen.
Hab's hiermit mit zwei weiteren ESP Firmware Versionen als Grundlage versucht:
AT+GMR
0018000902
OK
danach auch noch mit der:
AT+GMR
00170901
OK
Zugang in mein WLAN möglich und vorhanden.
Danach jeweils die 0x00000.bin und die 0x40000.bin aus der der Bridge drauf und das Teil taucht nicht mehr in meinem Netzwerk auf, obwohl die LED am GPIO2 munter blinkt.
Irgendwas mach ich wohl falsch aber ich komme nicht drauf, was sein könnte.
Gruß
Frank
P.S.: Sobald dir Bridge Firmware drauf ist komme ich auch seriell nicht mehr auf den ESP; zumindest reagiert er nicht mehr auf AT Befehle.
Probier mal das:
https://github.com/jeelabs/esp-link (https://github.com/jeelabs/esp-link)
Ist im Grunde das Gleiche wie die Bridge, lässt sich aber im nachhinein über den Browser konfigurieren und auch ein Terminal hat man drin :)
@Kuzl: Sieht interessant aus. Danke für den Hinweis.
@Nepumuk: Bin fündig geworden: Schau mal hier: https://drive.google.com/folderview?id=0Bw7HZpJSTfpcb1JFQ3ZYY3JqUHc&usp=sharing
Habe auch viele Links zu 0.9.2.2 gefunden, weiß aber nicht, ob es damit funktionieren würde.
Haben wir aber nicht das Ziel aus den Augen verloren? (Wie mein Techniklehrer im TG schon immer sagte: Von hinten durch die Brust direkt ins Auge ;) )
Warum arbeiten wir nicht an einer Firmata Version, die direkt auf dem ESP8266 läuft? Das würde vieles erleichtern und die Ausfallsicherheit für den Echtbetrieb erheblich erhöhen. Der ESP8266 ist schneller und hat mehr Speicher als die AT Mega Chips. Wenn einem die GPIOs reichen, wäre der kleine doch eine schöne Alternative. Die 201-Version hat nochmal zwei GPIOs mehr als alle anderen.
Was meint Ihr? Ist es technisch überhaupt möglich?
Zitat von: Familienpapi am 05 November 2015, 10:24:47
Was meint Ihr? Ist es technisch überhaupt möglich?
Versuchs doch : Lade dir die Arduino IDE 1.6.5 herunter, kopiere Firmata in libs
und starte direkt auf dem ESP8266 mit Hilfe von https://github.com/esp8266/Arduino
Danke. :-[
Ich erspare es uns allen, die (Fehler-)Meldungen hier rein zu kopieren. Das beginnt schon damit, dass der ESP8266 in Boards.h von Firmata gar nicht definiert ist.
Freue mich über konstruktive Hilfe. ;)
Hi,
Die Idee finde ich gut, Firmata direkt auf den ESP zu bringen.... Aber das könnte auch in einem Bergarbeit ausufern...
LG,
Stephan
Boards.h habe ich gerade mal kurz angepasst und scheint zu funktionieren.
Vorerst kümmere ich mich nur um die Digital-, Analog- Ein- und Ausgänge sowie um I2C und OneWire. Die anderen Themen habe ich auskommentiert. Sind aber trotzdem noch eine ganze Ladung Fehlermeldungen.
Heute Nachmittag darf ich andere Dinge tun, aber mal sehen, was der Abend / die Nacht so mit sich bringt.
Sind wir jetzt an einem Punkt, an dem man einen neuen Thread öffnen sollte? (Hallo, Moderator *winkewinke*)
PS: Ich arbeite mit der Arduino 1.6.5, diesem Board Manager (http://arduino.esp8266.com/stable/package_esp8266com_index.json) und der Configurable Firmata V2.06 unter Windows 8.1 x64 (damit wir wissen, über was ich rede)
Hallo,
Mach du doch einen neuen Thread auf Familienpappi.
Das Thema fängt ja erst an
Gruß
Frank
Gesendet von meinem iPhone mit Tapatalk
here it is:
http://forum.fhem.de/index.php/topic,43572.0.html
Hallo,
da die Lösung bei mir immernoch nicht läuft, mal die Frage hier, ob schon jemand die Lösung mit einem ESP-01 und Arduino Nano oder Uno erfolgreich umgesetzt hat?
Wenn ja wäre eine kurze Beschreibung der genauen Reihenfolge schön.
Also in der Form
1. ESP_8266_BIN0.92.bin oder was sonst auf Esp flashen
2. ESP mit WLAN verbinden (über AT Befehle)
3. user_config.h anpassen
3. Esp8266-Transparent-Client make und dann die beiden binarys flashen....
.
.
.
Ich habe z.B. schon Probleme das der EPS-01 mit der ESP_8266_BIN0.92.bin nicht sehr sauber läuft, einige AT Befehle werden mit ERROR quittiert, die bei neueren Firmwares super laufen.
Wäre froh ein paar Erfahrungen zu hören, die mich vielleicht zu der Ursache des Problems führen.
Ansonsten werde ich mir mal die Mühe machen, den Vorschlag von Kuzl auszuprobieren.
Gruß
Frank
Die 0.92 kennt einige Befehle nicht, aber der Core ist genau der, der für dieses make gebraucht wird.
Bei mir funktionierte es ohne Probleme mit einem 01 und einem 07 am Mega 2560 und Nano.
Wie bist du genau vorgegangen?
Hast du nach dem aufspielen der 0.92 direkt die Esp8266-Transparent-Client... aufgespielt oder zuerst mal mit dem Wlan verbunden...?
Kannst du das mal mit ein paar Worten beschreiben?
Es fällt mir echt schwer hier aufzugeben :-[ Das muss doch laufen.
Hat sich vielleicht in der Toolchain was geändert im Laufe der Zeit. Mir kommt das mit den Firmwareversionen ein bisschen spanisch vor.
Ich habe es wie folgt (und zur Zeit in der Toolchain, die CaptainHook auf Seite 1 erwähnt hat, angegeben ist) installiert:
cd /opt/Espressif
wget -O esp_iot_sdk_v0.9.3_14_11_21.zip https://github.com/esp8266/esp8266-wiki/raw/master/sdk/esp_iot_sdk_v0.9.3_14_11_21.zip
wget -O esp_iot_sdk_v0.9.3_14_11_21_patch1.zip https://github.com/esp8266/esp8266-wiki/raw/master/sdk/esp_iot_sdk_v0.9.3_14_11_21_patch1.zip
unzip esp_iot_sdk_v0.9.3_14_11_21.zip
unzip esp_iot_sdk_v0.9.3_14_11_21_patch1.zip
mv esp_iot_sdk_v0.9.3 ESP8266_SDK
mv License ESP8266_SDK/
Da wird ja die sdk0.9.3 installiert, beißt sich dass mit der ESP_8266_BIN0.92.bin ? ? ?
Wie CaptainHook schon wunderbar schrieb:
Zitat von: CaptainHook am 26 Januar 2015, 23:09:28
HowTo Build:
Meine ToolChain bassiert auf folgenden Wiki https://github.com/esp8266/esp8266-wiki/wiki (https://github.com/esp8266/esp8266-wiki/wiki)
Das MakeFile im tar-Archiv sollte 100% kompatibel sein.
WLAN Einstellungen Server-IP und Port wird in user/user_config.h konfiguert.
dann reicht ein make und ein make flash und der ESP ist auch schon fertig
Dann wird das Ganze verkabelt
VCC 3,3V
RST&CH_PD gehen auf 3,3V
RX --> TX-Arduino (ggf über LevelShifter da der ESP nicht 5V kompatibel ist!!!!!)
TX --> RX-Arduino (ggf über LevelShifter da der ESP nicht 5V kompatibel ist!!!!!)
GND GND
GPIO0 bleib in der Luft hängen.
GPIO2 gibt einen 0.5Sec puls aus diese kann eine LED zum blinken bringen (+ ---RRR----|<----GPIO2) den nutze ich um zu sehen das der ESP noch lebt.
Die 3,3V Spannungs versorgung sollte vernünftig sein die 3,3V der Arduino (vom FDTI-Chip sind NICHT ausreichend)
Ich nutze daher einen 3.3V LDO (AMS1117-3.3) um mir aus den 5V eine ordentliche 3,3V Versorgung zu machen.
Im Bild kommen die 5V von einem PC-Netzteil, dieses versorgt den Arduino und den ESP.
Das habe ich mit einer Ubuntu 15.04 64Bit unter Windows 8.1 x64 Hyper-V durchgeführt. Das flashen habe ich dann direkt in Windows von Hand erledigt, da ich den COM-Port nicht in die virtuelle Maschine bekommen habe. Die Dateien kann man sich per WinSCP in ein temporäres Verzeichnis unter Windows holen, bei mir C:\Temp mit Sicherheitseinstellung "Jeder" "Vollzugriff". Die ESP8266 AT-Firmware 0.92 nur ein einziges mal flashen. Das reicht. Danach kannst Du immer wieder geänderte Versionen aus dieser Tool Chain flashen. Meine einzigste kleine Änderung hat CaptainHook ins GitHub übernommen.
Das war's auch schon. In FHEM habe ich folgenden Code:
define FRMB1 FRM 28256 [global]
attr FRMB1 i2c-config 1
attr FRMB1 sampling-interval 30000
attr FRMB1 stateFormat reading
attr FRMB1 model nano
attr FRMB1 room zConfig
attr FRMB1 group FRM
28256 ist bei mir der Port, auf dem dieser ESP mit meinem FHEM die Verbindung aufbaut. Der muss, zusammen mit der IP des FHEM Servers, mit dem Port in user/user_config.h übereinstimmen. Ich bin dabei bewusst mal unter der magischen 32768 geblieben. NodeMCU hat ja Probleme bei TCP Ports ab 32768. Ob dies hier auch so ist, weiß ich nicht. Hab's nicht getestet.
Ganz wichtig sind die 3,3V Versorgung. Der ESP zieht zeitweise bis ca. 230mA. Das liefert kein einziger Arduino. Hier benötigst Du definitiv eine separate Stromversorgung. Ich habe einen LF33CV im Einsatz. Ein kleiner Schaltregler, der mit über 90% Effektivität die Spannung auf 3,3V stabilisiert, auch bei jenseits der 30V Eingangsspannung, und das ohne Kühlung.
Vielen Dank für die ausführliche Beschreibung.
Prinzipiell habe ich alles genauso gemacht. Ich hab das flashen unter Ubuntu gemacht und auch unter Windows (beides probiert), das flashen läuft auch sauber durch. (hab noch nicht geschnallt, wie man hier Bilder anhängt, sonst hätte ich mal einen Screenshot gepostet).
Aber wie ist es mit der Toolchain, da steht jetzt man soll die esp_iot_sdk_v0.9.3_14_11_21.zip (usw.) installieren (siehe 2 Posts aufwärts). Hat sich das vielleicht geändert, seit du es installiert hast? Macht das einen Unterschied? Das "make" und "make flash" läuft ja bei mir auch sauber durch.
Hi,
Wie Familienpapi schon schreibt ist die Spannungsversorgung wichtiger als man denkt. Meine ersten Versuche sind auch gescheiter, da meine Spannungsversorgung zi schwach war. Ein Arduino oder ein usb serial Wandler schafft es nicht den esp8266 zu versorgen (zumindest keiner von meinen die ich versucht habe).
Flachen ging auch mit schlechter Versorgung nur der Betrieb nicht.
Gruß
Stephan
Gesendet von meinem A0001 mit Tapatalk
Ich habe zwar eine externe Versorgung, aber ich werde es gleich mal nachmessen.
Es muss ja sowas in der Art sein. :-\
Danke für den Hinweis
ich habe die iot 0.9.3 mit dem patch1.
Zuerst hatte ich den ESP auch an den 3,3V des Nano hängen. Flashen funktionierte, aber der Betrieb nicht. Sobald das WLAN aktiviert wird, bricht die Versorgung zusammen und weder der ESP noch der Nano funktionieren dann noch korrekt. Da hat auch ein Elko mit 3.300µF nicht geholfen.
Ich verzweifele, hab's gerade gemessen (zwar nur mit Multimeter, aber ) die Spannung steht stabil bei 3,29V. Auch beim Reset bzw. Neustart
Ich habe auch die iot 0.9.3 mit dem patch1, jetzt weiß ich wirklich nicht mehr weiter.
hab schon hundert mal neu geflasht, in allen Varianten an Originalfirmware. Hatte zwischendurch auch mal an der client.c rumgefummelt und direkt Auswirkungen am Esp festgestellt. Hab die Änderungen wieder rückgängig gemacht..........
Es blinkt am GPIO2, aber aus irgendeinem Grund gibt's keine Verbindung ins WLAN.
Protokoll vom flashen:
frank@frank-VB:/opt/Espressif/Code/ESP8266_Transparent_TCP_Client_Bridge-master$
sudo /opt/Espressif/esptool-py/esptool.py --port /dev/ttyUSB0 write_flash 0x00000 ESP_8266_BIN0.92.bin
Connecting...
Erasing flash...
Wrote 520192 bytes at 0x00000000 in 50.5 seconds (82.4 kbit/s)...
Leaving...
frank@frank-VB:/opt/Espressif/Code/ESP8266_Transparent_TCP_Client_Bridge-master$ make
FW firmware/0x00000.bin
FW firmware/0x40000.bin
frank@frank-VB:/opt/Espressif/Code/ESP8266_Transparent_TCP_Client_Bridge-master$
sudo make ESPPORT=/dev/ttyUSB0 flash
/opt/Espressif/esptool-py/esptool.py --port /dev/ttyUSB0 write_flash 0x00000 firmware/0x00000.bin 0x40000 firmware/0x40000.bin
Connecting...
Erasing flash...
Wrote 30720 bytes at 0x00000000 in 3.0 seconds (81.8 kbit/s)...
Erasing flash...
Wrote 142336 bytes at 0x00040000 in 14.0 seconds (81.4 kbit/s)...
Leaving...
frank@frank-VB:/opt/Espressif/Code/ESP8266_Transparent_TCP_Client_Bridge-master$
Gibt es schon fortschritte?
Ich arbeite an einer Lösung mit Arduino IDE 1.6.5 unter Windows 8.1 x64. Hänge aber gerade daran, dass direkt beim ersten Kontakt FHEM auf "disconnected" geht und das nur mit einem "shutdown restart" zu beheben geht.
Werde zwischen den Jahren etwas mehr Zeit haben, um da nochmal dran zu gehen.
Wenn Du hier mit programmieren möchtest, lege ich den bisherigen Code gerne in mein Github.
Parallel hatte ich die Hoffnung, eine Quick-and-Dirty Lösung für ESP8266 Firmata zu erhalten. Aber das ganze ist doch gar nicht so einfach. Der Arduino Firmata Code selbst ist schon nicht 100% ESP8266 kompatibel.
Hallo,
Bei mir nicht. Ich habe es noch mit einem richtigen USB seriell Wandler und einem ESP-07 getestet. Bei mir geht's einfach nicht. Ich bin jetzt auf MySensors umgestiegen, ist auch eine tolle Lösung für Wireless Eigenbau Projekte mit FHEM.
Wenn ich mal wieder mehr Zeit habe werde ich mich noch mit einer reinen Esp8266 Lösung ohne arduino beschäftigen.
Bei einigen scheint ja auch die in diesem Thread beschriebene Lösung zu funktionieren.
Gruß
Frank
Ja, so hat jeder seine Eigenbaulösungen (auch ich) und das Universelle / Flexible bleibt auf der Strecke. Finde ich schade.
Aber danke für den Hinweis. Werde mir mySensors mal näher anschauen.
Guck mal unter MySensors.Org
Besteht aus einer Library und beispielsketches für alle denkbaren Fälle, die man beliebig verändern kann. Der Funkchip arbeitet auf 2.4ghz also wie WLAN aber belegt keine Adresse. Außerdem lassen Sie sich als repeater betreiben, was die Reichweite fast unendlich macht.
Funktioniert super einfach, der erste Test lief schon nach 10min
Vielleicht wäre das eine einfachere Variante für dein Pojekt mit dem ESP8266. Also Mysensors Library direkt auf dem esp 8266
Gruß
Frank
Ich weiß, das ist off-topic, aber ich antworte einfach mal:
Irgendwie schaffe ich es nicht, dass meine Arduino IDE 1.6.5 die Libraries von mySensors erkennt. Mit der Anleitung auf mySensors und ein paar Google-Seiten komme ich nicht weiter.
Wohin muss man welche Verzeichnisse unter Win8.1x64 kopieren, damit ich wenigstens die Beispiele von mySensors mal probieren kann?
Zitat von: Familienpapi am 05 Dezember 2015, 18:42:27
Wohin muss man welche Verzeichnisse unter Win8.1x64 kopieren, damit ich wenigstens die Beispiele von mySensors mal probieren kann?
In 'libraries' in deinem Sketch-Ordner...
schau mal hier http://forum.fhem.de/index.php/topic,44333.msg369508.html#msg369508 (http://forum.fhem.de/index.php/topic,44333.msg369508.html#msg369508)