ESP8266 mit ESPEasy in wenigen Minuten an Fhem anbinden

Begonnen von Reinhart, 26 Dezember 2015, 10:33:51

Vorheriges Thema - Nächstes Thema

cs-online

Hallo zusammen,

erstmal großes Lob an Reinhart, wie immer super Arbeit !

Mein Problem: Ich wollte eine statische IP eingeben und nach dem Reboot der NodeMCU war diese nicht mehr erreichbar. Die neue IP ist in der Fritzbox zu sehen, nur tut sich nichts, wenn ich die aufrufe. Also hab ich mir gedacht, ist wohl was schief gelaufen und wollte das neu flashen. Aber: Nach dem Flashen und reboot kein AP zu finden... Fritzbox sagt immernoch die statische IP an. Im Esplorer kann ich mitmal nur noch mit 115kBit eine Verbindung aufbauen (vorher nur mit 9600, so wie es auf der Node hinten drauf steht). Im Esplorer gut zu sehen, die Node startet, die statische IP wird angezeigt, das scheint also nicht überflasht worden zu sein, dann dauert es kurz nach dem connecten, dann resettet die Node und das Spiel von vorne in Endlosschleife. Eingaben über den Esplorer akzeptiert die Node nicht, über Browser komm ich da auch nicht drauf. Hab schon "normale" Firmware geflasht, da läuft dann alles wie gewohnt auch mit den Skripten, auch schon versucht die Node "komplett" zu löschen wie hier angegeben:

http://s6z.de/cms/index.php/homeautomation-homecontrol/hardwareplattformen/esp8266/131-loeschen-des-gesamten-flashspeichers


Immer mit dem selben Ergebnis. Es scheint, als ob ein bestimmter Flashbereich für diese Konfigurationen reserviert bleibt, der beim Flashen nicht gelöscht wird.

Hat jemand eine Idee ?

Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

noxx

#136
hallo

ich bin mir nicht sicher, wie espeasy in fhem eingebunden wird.
läuft soweit alles, aber die sensoren fehlen noch

evtl mag einer helfen. danke

nutze OpenHab MQQT

pi@raspberrypi:/etc/apt/sources.list.d $ mosquitto_sub -d -v -t \#
Client mosqsub/2853-raspberryp sending CONNECT
Client mosqsub/2853-raspberryp received CONNACK
Client mosqsub/2853-raspberryp sending SUBSCRIBE (Mid: 1, Topic: #, QoS: 0)
Client mosqsub/2853-raspberryp received SUBACK
Subscribed (mid: 1): 0
Client mosqsub/2853-raspberryp received PUBLISH (d0, q0, r0, m0, '/espeasy01/system/uptime', ... (4 bytes))
/espeasy01/system/uptime 0.00
Client mosqsub/2853-raspberryp received PUBLISH (d0, q0, r0, m0, '/espeasy01/system/freeram', ... (8 bytes))
/espeasy01/system/freeram 25960.00


Habs mal so probiert, aber ich bekomme in FHEM nichts rein
# Device Uptime definieren
define ESP8266 MQTT_DEVICE System Info
attr ESP8266 IODev MyBroker
attr ESP8266 room MQTT
attr ESP8266 stateFormat Uptime: uptime
attr ESP8266 subscribeReading_uptime /espeasy01/system/uptime

Papaloewe

#137
Nur das MQTT_DEVICE reicht alleine nicht, denn es braucht noch das übergeordnete MQQT-Interface im FHEM.

z.B. so:
define myMQTT 127.0.0.1:1883
wenn der MQTT-Broker auf derselben Kiste, wie das FHEM läuft.

Viel Erfolg.

Gruß
Thomas

noxx

#138
danke

bekomme nun die daten rein.

wie schalte ich aber ein relais das am esp hängt. gibt es ein Wiki für ESPeasy und FHEM?

Edit
Geht wohl unter anderem so:
http://192.168.1.226/control?cmd=GPIO,4,1&"

Muss in der ESPeasy GUI dann kein Relais definiert werden? Und wie kann
ich mir in FHEM den Status der GPIOs anzeigen lassen?

Papaloewe

z.B. so:
http://www.esp8266.nu/index.php/Relais

Ich bin mir nicht sicher, ob das auch über MQTT geht. Da habe ich irgendwo im ESPEasy-Forum etwas gelesen:
http://www.esp8266.nu/forum/viewforum.php?f=1

Musst du halt mal selber stöbern... 8)

noxx

danke, das schalten per Browser geht.

bin zwar schon länger hier angemeldet, will mich aber jetzt
intensiver mit FHEM beschäftigen.

Das was ich möchte eine Button in FHEM mit dem
ich Relais am ESP schalten kann. Die Relais sollen alternativ
auch per Zeitsteuerung geschaltet werden.

Finde leider keine Seite mit Beispielen für FHEM....

Papaloewe

Schau mal nach dem Stichwort "weblink" unter FHEM.
Das könnte das sein, was du haben möchtest.

http://fhem.de/commandref.html#weblink

deluxe41

#142
Ich schalte die GPIO's per DOIF und dummy's

define GPIO5 dummy
attr GPIO5 setList on off


define GPIO_Steuerung DOIF ([GPIO5] eq "off")({ GetHttpFile("192.168.178.45:80", "/control?cmd=GPIO,5,0") })
DOELSEIF
([GPIO5] eq "on")({ GetHttpFile("192.168.178.45:80", "/control?cmd=GPIO,5,1") })
DOELSEIF
([GPIO3] eq "off")({ GetHttpFile("192.168.178.45:80", "/control?cmd=GPIO,3,0") })
DOELSEIF
([GPIO3] eq "on")({ GetHttpFile("192.168.178.45:80", "/control?cmd=GPIO,3,1") })





Sent from my iPhone using Tapatalk
Fritzbox 7490 ( USV + Fall Back ), einige HM komponenten,ESPs

noxx

#143
danke.... probiere ich gleich mal

habs gerade mal wie in Post #45 getestet

define Beleuchtung_1 MQTT_DEVICE
attr Beleuchtung_1 IODev MyBroker
attr Beleuchtung_1 devStateIcon on:FS20.on off:FS20.off
attr Beleuchtung_1 eventMap 1:off 0:on
attr Beleuchtung_1 publishSet 1 0 /espeasy01/gpio/14
attr Beleuchtung_1 room Stall
attr Beleuchtung_1 stateFormat state


Schalter ist in der FHEM-GUI, aber es passiert nichts am ESP



EDIT
Bei deinem Code gibts folgenden Fehler:
Unknown command DOELSEIF, try help. Unknown command ([GPIO5], try help. Unknown command DOELSEIF, try help. Unknown command ([GPIO3], try help. Unknown command DOELSEIF, try help. Unknown command ([GPIO3], try help.

hjgode

Für ein Relais oder ähnliche Ausgabe über ESPeasy habe ich, wie hier empfohlen, einen Dummy mit webcmd="on:on off:off" und ein notify definiert:

define myLamp1 dummy
attr myLamp1 room Aussen,MQTT
attr myLamp1 webCmd on:on off:off

define myLamp1_ein_aus notify myLamp1 { \
if ("$EVENT" eq "on") { \
system "wget -O /dev/null -q http://192.168.0.106/control?cmd=GPIO,2,1&" \
}0;;\
if ("$EVENT" eq "off") { \
system "wget -O /dev/null -q http://192.168.0.106/control?cmd=GPIO,2,0&" \
}0;;\
}

# Device DS18b20 definieren, am ESPeasy
#define ESP8266 MQTT_DEVICE DS18B20
#attr ESP8266 IODev MyBroker
#attr ESP8266 room Aussen
#attr ESP8266 stateFormat Temperatur: Temperature°C
#attr ESP8266 subscribeReading_Temperature /hooks/devices/1/SensorData/temperature

# der MQTT broker
define MyBroker MQTT 192.168.0.40:1883
attr MyBroker room MQTT
define ESP8266 MQTT_DEVICE DS18B20
attr ESP8266 IODev MyBroker
attr ESP8266 event-min-interval 600
attr ESP8266 room Aussen,MQTT
attr ESP8266 stateFormat Temperatur: Temperature°C
attr ESP8266 subscribeReading_Temperature /hooks/devices/1/SensorData/temperature


Das oben zeigt zusätzlich wie ein DS18B20 am ESPeasy über MQTT in FHEM reinkommt.

Allerdings habe ich noch eine Definition, wo ich die Temperatur (oder auch anderes) direkt aus der ESPeasy Web Anzeige auslese. Das geht dann auch ganz ohne das MQTT Zeugs:
define httpmod1 HTTPMOD http://192.168.0.106/devices?setpage=1 300
attr httpmod1 userattr readingsName1 readingsRegex1 requestHeader1 requestHeader2 stateFormat
attr httpmod1 group json
attr httpmod1 readingsName1 Temperatur
attr httpmod1 readingsRegex1 temperature:</div><div class="div_r">([\d\.]+)
attr httpmod1 requestHeader1 Content-Type: application/json
attr httpmod1 requestHeader2 Accept: */*
attr httpmod1 room Aussen,Dachboden
attr httpmod1 stateFormat {sprintf("Temp: %.2f", ReadingsVal($name,"Temperatur",undef))}


~Josef
Debian SID mit aktuellem FHEM, nanoCUL 866, JeeLink EC3000, fhemduino, SIGNALduino,
3 x TFA TH Sensor, 1 x TFA TH Arduino Sender, 3 x EC3000, 4 x Elro Schaltsteckdosen, ESA2000
offline: Wibo Funkthermostat, 2 x ELV Funkthermostat FHT80, 2 FS20 ST4 Funksteckdose

AxelSchweiss

Ich habe das mit dem PublishSet auch mal ausprobiert
Bei mir hat FHEM dann folgenden Fehler geworfen ( mit verbose 5) :

2016.03.25 19:08:26 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at /usr/local/share/perl/5.14.2/Net/MQTT/Message/Publish.pm line 28.
2016.03.25 19:08:26 1: PERL WARNING: Use of uninitialized value $_[0] in pack at /usr/local/share/perl/5.14.2/Net/MQTT/Constants.pm line 130.
2016.03.25 19:08:26 1: localhost:1883 disconnected, waiting to reappear (MQTTBROKER)
2016.03.25 19:08:26 1: localhost:1883 reappeared (MQTTBROKER)


Wenn ich denPublish mit MQTT-Spy mache dann schaltet ESPEasy sofort.

Also scheint das an dem FHEM-Modul zu hängen  ... oder an der Pearl Library.
(oder an mir ... was ich nicht ausschliesen möchte)


The-Holgi

Zitat von: noxx am 25 März 2016, 17:29:10
wie schalte ich aber ein relais das am esp hängt. gibt es ein Wiki für ESPeasy und FHEM?
Hallo, schau mal hier:
https://forum.fhem.de/index.php/topic,50549.0.html
Wird eigentlich alles dazu erklärt.

Gruß Holgi
HP T610 Thin Client; Docker Fhem 5.9; 2X CUL V3 868mhz; Max Heizungssteuerung; FS20kse; FS20UWS; FS20S8-3; 2 FS20DI; HM-CFG-LAN,HM-LC-SW1-PL,HM-SEC-SD, HM-SE1PBU-FM;
Harmony Hub;Hue-Bridge mit Iris, E27 Bulb & FLS-PP

noxx

#147
ok, danke. der code vorhin funktionierte nicht welchen dem falschen GPIO Port  :o

Habe nun beide getestet und beide laufen.

# ESPeasy01 Hühnerstall Beleuchtung
define ESP01_R1 dummy
attr ESP01_R1 room Stall,MQTT
attr ESP01_R1 webCmd on:off

define ESP01_R1_ein_aus notify ESP01_R1 { \
if ("$EVENT" eq "off") { \
system "wget -O /dev/null -q http://192.168.1.226/control?cmd=GPIO,5,1&" \
}0;;\
if ("$EVENT" eq "on") { \
system "wget -O /dev/null -q http://192.168.1.226/control?cmd=GPIO,5,0&" \
}0;;\
}



# ESPeasy01 Hühnerstall Beleuchtung
define Beleuchtung_1 MQTT_DEVICE
attr Beleuchtung_1 IODev MyBroker
attr Beleuchtung_1 devStateIcon on:FS20.on off:FS20.off
attr Beleuchtung_1 eventMap 1:off 0:on
attr Beleuchtung_1 publishSet 1 0 /espeasy01/gpio/5
attr Beleuchtung_1 room Stall
attr Beleuchtung_1 stateFormat state


Beim 2ten bekomme ich High and Low aber vom Relais nicht getauscht.


Edit

High and Low geht doch zu tauschen mit

# ESPeasy01 Hühnerstall Beleuchtung
define Beleuchtung_1 MQTT_DEVICE
attr Beleuchtung_1 IODev MyBroker
attr Beleuchtung_1 devStateIcon on:FS20.on off:FS20.off
attr Beleuchtung_1 eventMap 1:off 0:on
attr Beleuchtung_1 publishSet 0 1 /espeasy01/gpio/5
attr Beleuchtung_1 room Stall
attr Beleuchtung_1 stateFormat state



Das einzige was stört, das der Status nicht zugesendet wird (bei beiden Codes)

noxx

schöne wäre es, wenns ein Wiki geben würde mit Codes (gibt ja wohl mehre Möglichkeiten) und
wie man die Geräte anklemmt.

Beispiel im Anhang.

Vielleicht kann mir noch einer sagen, wie man den Status zurücksendet.

Würde gerne am ESP noch einen Taster betrieben, der ebenfalls ein Relais schaltet.
Wäre schön, wenn FHEM denn aktuellen Zustand kennt.

hjgode

#149
Zitat von: noxx am 25 März 2016, 22:09:03
schöne wäre es, wenns ein Wiki geben würde mit Codes (gibt ja wohl mehre Möglichkeiten) und
wie man die Geräte anklemmt.

Beispiel im Anhang.

Vielleicht kann mir noch einer sagen, wie man den Status zurücksendet.

Würde gerne am ESP noch einen Taster betrieben, der ebenfalls ein Relais schaltet.
Wäre schön, wenn FHEM denn aktuellen Zustand kennt.

Den Staus eines GPIO ports der auf Output gesetzt wurde, kann man nicht über einen GPIO Input Befehl zurücklesen.

Eine mögliche Lösung (müsste in der Firmware verankert werden) wäre es eine Status Variable für Ausgabeports vorzuhalten und diese dann über einen Befehl via WebCmd und/oder MQTT zurückzuliefern. Diese würde aber ohne besondere Vorkehrungen (Zustand im Flash vorhalten etc.) nach einem Reset verloren sein. Da könnte man dann noch das Setzen des Ports gemäß gespeichertem Wert etc einbauen. Da müsste mal einer dran der sich in der ESPeasy Firmware auskennt.

Eine andere und meines Erachtens bessere Möglichkeit ist es den GPIO Out Werte über einen zweiten Port zurücklesen. Dann weiß man mit Sicherheit was am Ausgabe-Port ansteht. Bei einem ESP-01, der nur zwei Ports hat wobei man noch beachten muß, was an GPIO0 während eines Resets anliegt ist kann man dann aber nicht noch einen Taster anschliessen. Um den Zustand über einen Reset zu retten müsste die Firmware ebenfalls geändert werden.
Man kann zB den GPIO2 als Ausgang und GPIO0 als (Verify) Eingang verwenden.

ist leider derzeit so

~Josef

PS: hier noch ein paar schaltungsbeispiele: http://www.forward.com.au/pfod/ESP8266/GPIOpins/ESP8266_01_pin_magic.html
Debian SID mit aktuellem FHEM, nanoCUL 866, JeeLink EC3000, fhemduino, SIGNALduino,
3 x TFA TH Sensor, 1 x TFA TH Arduino Sender, 3 x EC3000, 4 x Elro Schaltsteckdosen, ESA2000
offline: Wibo Funkthermostat, 2 x ELV Funkthermostat FHT80, 2 FS20 ST4 Funksteckdose