esp8266 als Taster für FHEM

Begonnen von Kharim, 05 Januar 2017, 21:13:21

Vorheriges Thema - Nächstes Thema

Kharim

Hallo Zusammen,

hat zufällig schon einmal jemand einen esp8266 als Taster in FHEM eingebunden?
Ich habe diese nach - http://www.mikrocontroller-elektronik.de/wlan-notruftaster-mit-dem-esp8266-modul/ - geflasht und erfolgreich die WLAN Daten eingegeben.
Ebenso eine FHEM set Adresse, wie sie aus dem WLAN heraus funktioniert.
->http://192.168.100.30:8083/fhem?cmd=set%20Button1%20on%20&

Laut Log der FritzBox logt sich der Chip ein und 2 Sekunde später auch wieder aus.
Blinkcode der blauen LED sagt - Verbindung und HTTP Aufruf ok

Aber im FHEM passiert rein gar nichts -_-

Wo liegt das Problem?

Danke,
Kharim
Raspberry Pi 2 + Minibian + 2x MAX Cube CUN (868/433Mhz) + Thermostate + Fensterkontakte + Taster+RGB-LED Band über pigpiod + TFA Sensoren 30.3169/3125
Raspberry Pi 2 + Minibian +Z-Wave (USB) + Bewegungsmelder + Fensterkontakt + Sirene + SMS Steuer-/Benachrichtigung (ohne Internet)

Pfriemler

Spontane Idee: Du verwendest auf 8083 sicher Benutzernamen und Passwort - die sendet Dein Button aber nicht mit, wenn Du das so eingibst.
Leider ist das auch nicht so einfach:
https://forum.fhem.de/index.php/topic,9420.msg52008.html#msg52008
Alternativ einen eigenen Webport aufmachen, kastrieren und nur für sowas nutzen. Aber "set" zu erlauben öffent schon wieder ganz viele Scheunentore...

"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Kharim

Verdammt, ja ich hatte Benutzer und Passwort vergessen.
Leider geht es auch mit Nutzer:PW@192...... nicht :-(

Was meinst du mit Webport aufmachen und kastrieren?
Raspberry Pi 2 + Minibian + 2x MAX Cube CUN (868/433Mhz) + Thermostate + Fensterkontakte + Taster+RGB-LED Band über pigpiod + TFA Sensoren 30.3169/3125
Raspberry Pi 2 + Minibian +Z-Wave (USB) + Bewegungsmelder + Fensterkontakt + Sirene + SMS Steuer-/Benachrichtigung (ohne Internet)

Pfriemler

Lies mal Doku (commandref) zu FHEMWEB. Default sind 8083-8085 definiert. Je Port können Räume ausgeblendet (würde ich hier komplett machen) und Kommandos begrenzt werden, z.B hier ausschließlich "set". Kein Passwort setzen. Ist kein Schutz, jeder kann list und alle sets machen der auf den Port kommt. Für hausinterne Skriptkiddies also nicht geeignetes...
Vielleicht gibts noch was besseres.

via Tapatalk

"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Otto123

#4
Hallo Kharim,

ich habe den Sketch mal ausprobiert. Ich versteh den noch nicht richtig. Aber ich befürchte der Code ist so nicht dafür zu gebrauchen  :-[

Ich habe folgendes gemacht:
Ich habe ein ESP12F Entwicklungsboard genommen.
Da mir die Sache mit dem Setup und dem kreuzen der Seriellen Pins dabei zu kompliziert war, habe ich einfach alles direkt in den Sketch geschrieben:
In die Zeile   
WiFi.begin(ssid, passwort);
habe ich meine Zugangsdaten reingeschrieben
In die Zeile   url = url + "&Nachricht=" + urlencode(nachricht); habe ich
url = "http://192.168.178.83:8083/fhem?cmd=set%20SD3%20toggle%20&";
Jetzt geht beim drücken der Taste meine Steckdose an und aus.  ;D
Die ursprüngliche Zeile und der code davor sind aus meiner Sicht nicht geeignet aus URL und Nachricht eine sinnvolle http:// nachricht zusammen zu bauen.
Also ich denke Du musst den Sketch anpassen, oder Du machst es einfach so wie ich  8)

Und die Vermutung von Pfriemler geht glaube ich in die falsche Richtung  ;)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Pfriemler

#5
Otto, was meinst Du damit? Meine Vermutung, dass es eine Authentifizierung braucht?
Natürlich ist mein Lösungansatz falsch, wie ich gerade feststellen muss. Denn die Authentifizierung ist ja nicht mehr bei FHEMWEB, sondern bei "allowed"-Instanzen.
Trotzdem würde ich eine zweite FHEMWEB-Instanz anlegen.

Also, Kharim, mein Vorschlag:

define WEBButton FHEMWEB 8086 global
attr WEBButton hiddenroom input,detail,save
## 8083-8085 sind ja schon belegt, ggf. höher
attr WEBButton hiddenroom input,detail,save
## mit hiddenroom input,detail,save werden bereits viele Aktionen auf dieser Seite unmöglich.
## zusätzlich vielleicht noch alle bekannten Räume listen - neue Räume tauchen dann aber dort wieder auf

define allowed_MyESPButton1 allowed
attr allowed_MyESPButton1 validFor WEBButton
attr allowed_MyESPButton1 allowedCommands set
attr allowed_MyESPButton1 allowedDevices Button1
## <- das ist der Name Deines Dummys, den du schalten willst, ggf. anpassen.


Ich habe das eben mal ausprobiert - man kann noch viel sehen, aber schalten geht wirklich nur noch Button1, kein save, kein set auf andere Geräte.
Wenn man mehrere Dummys schalten will, kann man die bei allowedDevices ergänzen.

Und zum Kommando des ESP8266:
Natürlich ist die Komposition aus dem Demo mit dem "&Nachricht=" nur passend für Empfangsseiten, die das Tag "Nachricht" erwarten.
Kharim hat aber http://192.168.100.30:8083/fhem?cmd=set%20Button1%20on%20&; definiert, das klappt prima.

edit: Ja, nee ... wenn man das in das WEBsetup eingibt, gehts natürlich nicht. Das Composing ist ... wie Otto schon sagt, natürlich falsch, bzw. anpassungsbedürftig.
Kharim muss dann allerdings, wenn er meinem Vorschlag folgt, die 8083 in 8086 ändern.
edit: und im Sketch ändern (die vier Zeilen auskommentieren und die fünfte ergänzen):
Zitat
//  url = url + "UBatt=" + Ubatt;      //Parameter Bat Spannung
//  url = url + "&WachNr=" + String(Ziklus[0] - 1); //Aufwachzyklus
//  url = url + "&Empfang=" + String(rssi); //Parameter Signalstärke
//  url = url + "&Nachricht=" + urlencode(nachricht);
url = url + "/fhem?cmd=" + urlencode(nachricht);
Dann müsste man im Setup als "<ip>:port" und als Nachricht "set Button1 on" oderwasauchimmer eingeben.
IDEE: für besser hielte ich, nur einen definierten Dummy zu besetzen und einen ganzen Befehlssatz zu schicken, der auch gleich Batteriespannung, WachNr und WLAN-rssi als Userreadings im Dummy einträgt, und auf einen geänderten Dummy mit Notify zu reagieren. Kann ja jeder machen wie er will.

Ziel der ganzen Aktion ist jedenfalls, ein authentifizierungsfreies Hintertürchen zu schaffen, weil FHEM meines Wissens solche Konstrukte wie "user:password@url" nicht unterstützt.

Ich habe noch zwei NodeMCUs hier liegen, weil ich für meine neuen Projekte doch noch auf die WEMOS warten muss, das werte ich vielleicht noch heute zusammenbacken und richtig testen.
Zuerst mit meiner 8083, und wenn das funktionert, bekomme ich das Weinen ...



"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Otto123

Zitat von: Pfriemler am 07 Januar 2017, 18:56:01
Otto, was meinst Du damit? Meine Vermutung, dass es eine Authentifizierung braucht?
Exakt! Wenn die URL wie bei Kharim geht (und bei mir auch) dann geht es ohne. Das FHEMWEB ist doch per default offen.

Es sei denn Kharim hat es nicht offen und die credentials im Browser gespeichert.

Und ich denke es liegt (wie du auch gesehen hast) nicht an der URL sondern am Sketch. Vielleicht ist die "bin" auch anders, wollte ich nicht probieren, da ich keine blanken Module rumliegen habe.
Aber ich werde mir jetzt endlich mal welche bestellen  8)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Pfriemler

Zitat von: Otto123 am 07 Januar 2017, 20:12:21
Exakt! Wenn die URL wie bei Kharim geht (und bei mir auch) dann geht es ohne. Das FHEMWEB ist doch per default offen.
das stimmt, aber Kharim hat auch im Post auf meine Vermutung geantwortet, dass er Benutzer und Passwort gesetzt hat, wie sich das übrigens dringend gehört  ;D

ZitatUnd ich denke es liegt (wie du auch gesehen hast) nicht an der URL sondern am Sketch.
Ich denke, wir liegen beide richtig.

Da ich morgen was anderes zu tun habe, muss es jetzt liegen bleiben, aber ich plane den Sketch noch umzubauen, so dass er die ohnehin ermittelten Werte verwerten kann, etwa "set myDummy on;;setreading myDummy batterylevel ##BATT##;;setreading myDummy eventNr ##WAKENR##;;setreading myDummy rssi ##RSSI##". Die ##Tags werden dann vom Sketch aktualisiert.  Dann ist der Sketch für jeden FHEMler individuell nutz- und konfigurierbar.

Generell ist die Idee eines so universellen und dabei so einfach konfigurierbaren Gerätes sowas von genial ...

ZitatAber ich werde mir jetzt endlich mal welche bestellen  8)
Vor allem diese kleinen.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Otto123

Meine ich doch: die nackten Module.  8)

Es gibt beim Chinesen die kleinen LED Klebelampen mit Druckknopf Batteriefach usw für einen Euro.

Da hat man für quasi unter 5 € einen Dashbutton der nirgendwohin telefoniert.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Kharim

Hallo Zusammen,


Zitat von: Otto123 am 07 Januar 2017, 17:18:36
Aber ich befürchte der Code ist so nicht dafür zu gebrauchen  :-[

Das Gefühl habe ich langsam auch. Ich würde fast vermuten er hat ein Problem mit Leerzeichen in der URL....
Kannst du mir bitte (gerne auch als PM) genauer erklären wie du die Firmware verändert hast?
(Habe leider kein Entwicklungsboard  - müsste also den Quellcode verändern, compilieren und flashen?!....)


Zitat von: Pfriemler am 07 Januar 2017, 18:56:01
Ziel der ganzen Aktion ist jedenfalls, ein authentifizierungsfreies Hintertürchen zu schaffen, weil FHEM meines Wissens solche Konstrukte wie "user:password@url" nicht unterstützt.
Ich habe es auch nochmal mit einem (temporär) ganz offenem Zugang versucht - selbes Ergebnis.
Also ich nutze "user:password@url" durchaus mit FHEM - funktioniert wunderbar in den gängigen Browsern.....

Also bleibt nur eine Veränderung des Quellcodes...

Raspberry Pi 2 + Minibian + 2x MAX Cube CUN (868/433Mhz) + Thermostate + Fensterkontakte + Taster+RGB-LED Band über pigpiod + TFA Sensoren 30.3169/3125
Raspberry Pi 2 + Minibian +Z-Wave (USB) + Bewegungsmelder + Fensterkontakt + Sirene + SMS Steuer-/Benachrichtigung (ohne Internet)

Otto123

Moin Kharim,
die Frage wäre, wie hast Du denn jetzt geflashed?
Ich habe den Sketch in der Arduino IDE geöffnet. Kennst Du die IDE? Meine ersten Schritte.
Für den ESP muss man in der IDE den ESP Boardmanager installieren, das habe ich einfach aus einer Anleitung aus dem Internet z.B. hier https://arduino-hannover.de/2015/04/08/arduino-ide-mit-dem-esp8266/
Du musst deinen Flasher auswählen und die COM Schnittstelle.
Dann suchst Du im Sketch die beiden Zeilen, die ich oben erwähnt hatte.
Trägst dort alles direkt per String ein und drückst dann auf hochladen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Kharim

Ich muss gestehen, habe bisher kein Arduino in der Hand gehabt.
Vielleicht kann man das auch auf einem Pi umsetzen? (Muss ich mich mal belesen)

Geflasht habe ich über einen USB zu Serial Adapter nach: http://esp8266-server.de/index.html#Laden
Raspberry Pi 2 + Minibian + 2x MAX Cube CUN (868/433Mhz) + Thermostate + Fensterkontakte + Taster+RGB-LED Band über pigpiod + TFA Sensoren 30.3169/3125
Raspberry Pi 2 + Minibian +Z-Wave (USB) + Bewegungsmelder + Fensterkontakt + Sirene + SMS Steuer-/Benachrichtigung (ohne Internet)

Otto123

#12
Zitat von: Kharim am 08 Januar 2017, 12:51:37
Ich muss gestehen, habe bisher kein Arduino in der Hand gehabt.
Vielleicht kann man das auch auf einem Pi umsetzen? (Muss ich mich mal belesen)

Geflasht habe ich über einen USB zu Serial Adapter nach: http://esp8266-server.de/index.html#Laden
Hast Du mich eventuell falsch verstanden. hat nix mit Arduino zu tun.

Am Ende von deinem verlinkten Artikel ist es doch genau beschrieben.

Hast Du keinen Windows PC?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Kharim

Otto123...ich glaub ich steh grad voll auf dem Schlauch.....

Du hast doch oben geschrieben....
------------
Du musst deinen Flasher auswählen und die COM Schnittstelle.
Dann suchst Du im Sketch die beiden Zeilen, die ich oben erwähnt hatte.
Trägst dort alles direkt per String ein und drückst dann auf hochladen.
------------
Du kannst also vor dem Flashen den Inhalt des Sketch (Programmcode) verändern - richtig?

Ich kann das bisher nicht, bzw wüsste nicht wie. Beide in dem Beitrag angesprochene Tools Esptool und XTCOM_UTIL können nur flashen, aber nicht das Image selbst öffnen um mir Änderungen zu ermöglichen......

Ich habe das bisher nur in einer Win7 VM mittels esptool flashen können.

Gruß,
Kharim
Raspberry Pi 2 + Minibian + 2x MAX Cube CUN (868/433Mhz) + Thermostate + Fensterkontakte + Taster+RGB-LED Band über pigpiod + TFA Sensoren 30.3169/3125
Raspberry Pi 2 + Minibian +Z-Wave (USB) + Bewegungsmelder + Fensterkontakt + Sirene + SMS Steuer-/Benachrichtigung (ohne Internet)

Otto123

Zitat von: Kharim am 08 Januar 2017, 15:35:47
Du kannst also vor dem Flashen den Inhalt des Sketch (Programmcode) verändern - richtig?
Ich habe das bisher nur in einer Win7 VM mittels esptool flashen können.
Hi Kharim,
ganz unten in Deinem Link
ZitatArduino und ESP8266
Als nächstes kommt berechtigte Frage. Mit welchem Compiler wurde das Programm kompiliert? Mit Arduino IDE mit ESP8266 Unterstützung
Mann programmiert ESP8266 wie ein Arduino
Arduino IDE und WiFi Bibliothek
ja ok der Link geht zum github und englisch, habe ich vorhin nicht verfolgt.

Du musst den Flash mit der Arduino IDE machen, da kannst Du vorher editieren. Siehe mein Link https://arduino-hannover.de/2015/04/08/arduino-ide-mit-dem-esp8266/

Die IDE selbst gibt es hier https://www.arduino.cc/ unter downloads :)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz