FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Warlock_2016 am 22 April 2019, 21:06:13

Titel: HTTP Frage- Anbindung WLAN - Gardena R40Li mittels eines ESP8266
Beitrag von: Warlock_2016 am 22 April 2019, 21:06:13
Hallo Zusammen,

ich möchte gerne in meinen Gardena R40LI eine ES8266 Board mit WIFI installieren und am Motherboard anschliessen, damit ich über FHEM Befehle mittels Post/Get den Roboter steuern kann.

Es gibt im Netz eine gute Anleitung dazu mit den HEXcode, aber leider mehr mit dem Fokus auf der Hardware "LOXONE" und wie man es auf dieser Plattform realisiert >:(

https://www.loxwiki.eu/pages/viewpage.action?pageId=48137811

Ich war in der Lage auf dem ESP9266 das Sketch zu installieren und mit dem WIFI zu verbinden. Ich kann nun mittels einem Browser (siehe Bild Anhang) Befehle absetzen. Ebenso hat der Programmier vom Sketch erwähnt, dass man direkt Befehle absetzen kann (siehe auch unten)

Meine Frage hier wäre. 

Gibt es im FHEM eine Möglichkeit HTTP Befehle direkt an den ESP zusenden, wie auf dem Web Formular quasi ohne das Web Formular einsetzen zu müssen?

Wenn ich mir das HTML Coding ansehen sind folgende Funktionen im Header aufgebaut. Die Funktion "function con() " baut beispielsweise die Verbindung zum ESP auf.


Gruss, Markus


______________________________________________________________________

<html><head><title>dihav SerialPort over WiFi - HTML Interface</title></head><body style="background-color:#1C2128;text-align:center;line-height:250%"><br><div style="width:500;padding:10;margin:auto;box-shadow:0 0 6 2 rgba(0,0,0,0.2);border-radius:10;background-color:#8EA9CC"><style>input{width:100%} select{width:100%} .b2{width:50%} .b4{width:25%} </style><script language=javascript>
var art, rfc = 0;
function con() {
var s='bdrt=' + frm.bdrt.value + '&dbt=' + frm.dbt.value + '&sbt=' + frm.sbt.value + '&prty=' + frm.prty.value;
var req = new XMLHttpRequest();
req.onload = function(e) {
if (req.status == 200) if (req.responseText == 'OK') {
frm.disbtn.disabled = false;
frm.conbtn.disabled = true;
if (frm.ars.value != 0) art = setInterval(rec, frm.ars.value);
}
}
req.open('POST', 'con?' + rfc.toString(), true);
rfc++;
req.send(s);
}
function dis() {
var req = new XMLHttpRequest();
req.onload = function(e) {
if (req.status == 200) if (req.responseText == 'OK') {
frm.disbtn.disabled = true;
frm.conbtn.disabled = false;
clearTimeout(art);
}
}
req.open('GET', 'dis?' + rfc.toString(), true);
rfc++;
req.send(null);
}
function arschng() {
if (frm.disbtn.disabled) return;
clearTimeout(art);
if (frm.ars.value != 0) art = setInterval(rec, frm.ars.value);
}
function rec() {
if (frm.disbtn.disabled) return;
var req = new XMLHttpRequest();
req.onload = function(e) {
if (req.status == 200) if (req.responseText.startsWith('OK')) {
frm.recvd.innerHTML += dt2txt(req.responseText.substr(2), frm.rectp.value);
}
}
req.open('GET', 'rec?' + rfc.toString(), true);
rfc++;
req.send(null);
}
function send(data) {
if (frm.disbtn.disabled) return;
var req = new XMLHttpRequest();
req.onload = function(e) {
if (req.status == 200) if (req.responseText == 'OK') {
frm.sndhst.innerHTML += dt2txt(data, frm.dttp.value);
}
}
req.open('POST', 'snd?' + rfc.toString(), true);
rfc++;
req.send(data);
}
function snddt() {
var d = '', v = frm.snd.value, t = frm.dttp.value, p = '', i;
if (t != 0) v += ' ';
for (var k = 0; k < v.length; k++)
if (t == 0) {
d += v.charCodeAt(k).toString(16);
} else if (v.charAt(k) == ' ') {
if ((p != '') && (t == 1)) i = parseInt(p, 16);
if ((p != '') && (t == 2)) i = parseInt(p);
if (!isNaN(i)) {
if (i < 0) i = 0;
if (i > 255) i = 255;
if (i < 16) d += '0';
d += i.toString(16);
}
p = '';
} else
p += v.charAt(k);
if (frm.apnd.value == 1) d += '0d';
if (frm.apnd.value == 2) d += '0a';
if (frm.apnd.value == 3) d += '0d0a';
send(d);
}
function dt2txt(data, typ) {
var r = '', i;
for (var k = 0; k < data.length; k += 2) {
i = parseInt(data.substr(k, 2), 16);
if (typ == 0) r += String.fromCharCode(i);
if ((typ == 1) && (i < 16)) r += '0';
if (typ == 1) r += i.toString(16) + ' ';
if (typ == 2) r += i.toString() + ' ';
}
return(r);
}


____________________________________________________________


Step 10: Directly Use WiFi in Your Program
If you want to make a program that directly connects to this device without using the software downloaded from step 6, use the following protocol, I've made for this device.

Each [] is a byte.
Baud rate on port 2321 is a 4-byte value that most significant byte will be sent first.

Connect:
HTTP (Port 80):
Request: POST con
bdrt=####&dbt=#&sbt=#&prty=#
Response: OK or ER

Port 2321:
Request: [1][bdrt][bdrt][bdrt][bdrt][dbt][sbt][prty]
Response:
Titel: Antw:HTTP Frage- Anbindung WLAN - Gardena R40Li mittels eines ESP8266
Beitrag von: Bender78 am 11 Mai 2019, 06:47:12
Hallo,

bist du in dieser Sache schon weiter gekommen? Wollte dies ebenfalls an meinem R70Li einbauen und warte derzeit aber noch auf die Teile.
Via Udp funktioniert das nicht?
Titel: Antw:HTTP Frage- Anbindung WLAN - Gardena R40Li mittels eines ESP8266
Beitrag von: Warlock_2016 am 08 Juni 2019, 13:01:19
Nein bisher leider noch nicht. Bei dir?
Titel: Antw:HTTP Frage- Anbindung WLAN - Gardena R40Li mittels eines ESP8266
Beitrag von: amenomade am 09 Juni 2019, 20:08:34
Anscheinend muss man nur GET und POST Requests absenden. Von daher, sollte es mit HTTPMOD möglich sein

Alternativ mit curl in myUtils
Titel: Antw:HTTP Frage- Anbindung WLAN - Gardena R40Li mittels eines ESP8266
Beitrag von: eppi am 10 Juni 2019, 18:59:21
Mein Material (Flachbandkabel und Pfostenstecker) ist noch unterwegs, trotzdem habe ich mich mal etwas eingelesen.
Für mein Projekt benötige ich folgende Befehle:

#Manuell:
#02-0E-01-03-D2-03
system "curl -s -k http://192.168.x.y/send?cmd=02-0E-01-03-D2-03"

#Auto:
#02-0E-01-04-51-03
system "curl -s -k http://192.168.x.y/send?cmd=02-0E-01-04-51-03"

#Home:
#02-0E-01-02-8C-03
system "curl -s -k http://192.168.x.y/send?cmd=02-0E-01-02-8C-03"

#Start:
#02-0E-01-01-6E-03
system "curl -s -k http://192.168.x.y/send?cmd=02-0E-01-01-6E-03"

#Stop:
#02-0E-01-00-30-03
system "curl -s -k http://192.168.x.y/send?cmd=02-0E-01-00-30-03"


Versuche deshalb mal in die FHEM-Commandozeile folgendes einzugeben (curl muss installiert sein auf deinem RPI):
IP 192.168.x.y durch die deines ESP ersetzen
{system "curl -s -k http://192.168.x.y/send?cmd=02-0E-01-02-8C-03"}
und
{system "curl -s -k http://192.168.x.y/send?cmd=02-0E-01-01-6E-03"}

Danach sollte der Robotermäher zurück zur Basis fahren..
Bei den curl Parameter (-s -k) bin ich mir nicht ganz sicher, ob diese benötigt werden. Das werde ich testen, sobald mein Material hier ist.

Viel Erfolg!

Titel: Antw:HTTP Frage- Anbindung WLAN - Gardena R40Li mittels eines ESP8266
Beitrag von: amenomade am 10 Juni 2019, 20:43:40
Wenn das so ist, und dazu keine Authentifizierung nötig ist, kann man das super einfach mit HTTPMOD abbilden:

define R40li HTTPMOD 192.168.x.y/send?cmd=%%code%% 0
attr R40li replacement01Mode text
attr R40li replacement01Regex %%code%%
attr R40li get01Name Manuell
attr R40li get01Replacement01Value 02-0E-01-03-D2-03
attr R40li get02Name Auto
attr R40li get02Replacement01Value 02-0E-01-04-51-03
attr R40li get03Name Auto
attr R40li get03Replacement01Value 02-0E-01-02-8C-03
attr R40li get04Name Auto
attr R40li get04Replacement01Value 02-0E-01-01-6E-033
Titel: Antw:HTTP Frage- Anbindung WLAN - Gardena R40Li mittels eines ESP8266
Beitrag von: Warlock_2016 am 16 Juni 2019, 23:05:16
Hast du in der Zwischenzeit deine Teile bekommen zum Ausprobieren?
Mein Verständnis war, dass man zuerst einen Connect zum Mähroboter machen muss?
Titel: Antw:HTTP Frage- Anbindung WLAN - Gardena R40Li mittels eines ESP8266
Beitrag von: amenomade am 17 Juni 2019, 00:15:47
Ich habe selbst kein Gardena. Aber wenn Du das HTTPMOD wie oben definierst, und dann die Log mit verbose 5 zeigst, könnte man weiter gehen. Selbst das Login kann man einfach in HTTPMOD einbauen.
Titel: Antw:HTTP Frage- Anbindung WLAN - Gardena R40Li mittels eines ESP8266
Beitrag von: eppi am 17 Juni 2019, 18:03:16
Zitat von: Warlock_2016 am 16 Juni 2019, 23:05:16
Hast du in der Zwischenzeit deine Teile bekommen zum Ausprobieren?
Mein Verständnis war, dass man zuerst einen Connect zum Mähroboter machen muss?
Nein, leider noch nicht. China (Ali) Bestellungen dauern in letzter Zeit bei mir 5 und mehr Wochen. Ich melde mich bei dir sobald das Material hier ist und ich testen konnte.
Titel: Antw:HTTP Frage- Anbindung WLAN - Gardena R40Li mittels eines ESP8266
Beitrag von: Accureve am 30 Mai 2020, 17:05:10
Hallo, habe eine Anleitung zur Automatisierung des Gardena R40li mit einem ESP8266 in folgendem Beitrag hinterlegt: https://forum.fhem.de/index.php/topic,111669.0.html