Aufgrund derzeit hohem Spamaufkommens werden neue Nutzer sehr restriktiv behandelt. Nach kurzer "Bewährungszeit" hat man als normaler Nutzer weitreichende Rechte und benötigt auch kein Captcha mehr.
.
Nutzer, die sich danach dennoch als Spammer oder Trolle erweisen, können jederzeit wieder auf diesen Status zurückgesetzt oder gebannt werden.
Dasselbe gilt für Versuche, politische Überzeugungen kund zu tun, egal aus welcher Richtung diese kommen.
.
.:!: Achtung! Derzeit ist Robonect (noch) nicht mit dem Automower 305 ab Baujahr 2020 zusammen mit der neuen Mäher-FW MSW 41.4.0 kompatibel!
Aber: Im DailyBuild ist ein Patch enthalten, der getestet werden kann! (Stand 15.02.2024)
.
.Du hast Deinen Gardena-Mäher auf die Gardena-Firmware von 2023 aktualisiert?
.:arrow: Testmöglichkeit für das Daily Build.

Das FW-Update am Mäher wird dennoch nicht empfohlen, da das Daily Build nach aktuellen Berichten von Beta-Testern noch keine vollständige Kompatibilität gewährleisten kann! (Stand: 15.02.2024)
Wir empfehlen, das Gardena-Update noch nicht durchzuführen!

.
.

Homematic Abfrage mit V1.0 Beta 6

Einbindung von Robonect Hx und IO in Deine bereits bestehende Homematic-Anlage

Moderator: Lampi

Antworten
Benutzeravatar
vecci
Forum-Nutzer
Beiträge: 40
Registriert: Sa 21. Jul 2018, 13:14
Wohnort: Hagen-Hohenlimburg
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 6.xx.xx
Herstellungsjahr: 2017
Robonect-Modul: Robonect Hx (Rev.5)
Robonect Firmware: V1.0_Beta8c

Homematic Abfrage mit V1.0 Beta 6

Beitrag von vecci »

Hallo zusammen,
ich bin heute irgendwie alles auf einmal angegangen.
Angefangen habe ich mit dem Einbau der Gleitplatte, dann das Robonect, dann ALEXA und nun verzweifel ich seit Stunden an der Homematic Anbindung.
Homematic nutze ich seit 8 Jahren, allerdings kenne ich mich nicht so gut mit den Skripten aus.
Ich habe tagelang sämtliche Beiträge zu der Homematic hier im Forum studiert, kriege es aber einfach nicht hin.

Es kann ja auch sein, das es an der neuen FW Beta6 liegt??

Sämtliche Variablen sind angelegt, ein Skript habe ich mir zusammen gebastelt, es hapert aber an manchen Abfragen.

Mein Skript:
!Shaun CUxD Abfrage V1
!Als Systemvariablen sind in Homematic angelegt:
!Shaun_Modus
!Shaun_Modus_Text
!Shaun_Stop
!Shaun_Batterie
!Shaun_Zeit_in_Status
!Shaun_Laufzeit
!Shaun_Status
!Shaun_Status_Text
!Shaun_Timer_Status
!Shaun_Timer_Datum
!Shaun_Timer_Zeit
!Shaun_Fehler
!Shaun_LastSync
!Shaun_Wlan


!IP Adresse des Maehers
string Url = 'http://192.168.178.23/json?cmd=status';
string User = 'vecci';
string Password = '*********';

!löscht vorherige Abfrage
var stdout="";
var posStart;
var posEnd;
var substring;
var batt;
var temp;
string stderr;
string stdout;
string pos;

dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget --http-user=" # User # " --http-password=" # Password # " -q -O - '" # Url # "'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string stdout= dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();

!cuxd Serien Nummer
!dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
!dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
!string stdout= dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
WriteLine("Antwort: " # stdout);

pos=0;
posStart = '{"Status": ';
posEnd = ' ,';
pos = stdout.Find(posStart) + posStart.Length();
if(stdout.Find(posStart)>0)
{
substring = stdout.Substr(pos, 1).StrValueByIndex(posEnd, 0) ;
!substring = stdout.Substr(pos, 2).StrValueByIndex(posEnd, 0) ;
dom.GetObject('Shaun_Status').State(substring);
WriteLine("M_Status: " # substring);

! nur für Chart CUxD
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Shaun_Status;"#substring.ToInteger());

if (substring == 0) {dom.GetObject('Shaun_Status_Text').State("Status wird ermittelt");}
if (substring == 1) {dom.GetObject('Shaun_Status_Text').State("parkt");}
if (substring == 2) {dom.GetObject('Shaun_Status_Text').State("mäht");}
if (substring == 3) {dom.GetObject('Shaun_Status_Text').State("sucht die Ladestation");}
if (substring == 4) {dom.GetObject('Shaun_Status_Text').State("lädt auf");}
if (substring == 5) {dom.GetObject('Shaun_Status_Text').State("sucht");}
if (substring == 7) {dom.GetObject('Shaun_Status_Text').State("befindet sich im Fehlerstatus");}
if (substring == 8) {dom.GetObject('Shaun_Status_Text').State("Schleifensignal verloren");}

substring = stdout.Substr(pos, 2).StrValueByIndex(posEnd, 0) ;

if (substring == 16) {dom.GetObject('Shaun_Status_Text').State("abgeschaltet");}
if (substring == 17) {dom.GetObject('Shaun_Status_Text').State("schläft");}
}
else
{
dom.GetObject('Shaun_Status_Text').State("ausgeschaltet ?");
}

string temp = dom.GetObject('Shaun_Status_Text').Value();
WriteLine("Shaun_Status_Text: " # temp);

pos=0;
posStart = '"stopped": ';
posEnd = '", duration"';
pos = stdout.Find(posStart) + posStart.Length();
if(stdout.Find(posStart)>0)
{
substring = stdout.Substr(pos, 4).StrValueByIndex(posEnd, 0) ;
!dom.GetObject('Shaun_Stop').State(substring);
if (substring == "true") {dom.GetObject('Shaun_Stop').State("true");}
if (substring == "fals") {dom.GetObject('Shaun_Stop').State("false");};
WriteLine("Stop: " # substring);
}
else
{
dom.GetObject('Shaun_Stop').State('-');
}

pos=0;
posStart = '"duration":';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();
if(stdout.Find(posStart)>0)
{
substring = stdout.Substr(pos, 10).StrValueByIndex(posEnd, 0) ;
!substring ist hier vom Typ nicht String !!!
substring = substring.ToInteger()/60;
WriteLine(substring # " Minuten M_duration");
var zahl = substring.ToInteger();
WriteLine("zahl 0:" # zahl);
var h = (zahl / 60).ToInteger();
WriteLine("zahl h Gesamtstunden: " # h);
var d = (h / 24).ToInteger();
WriteLine("zahl d Tage:" # d);
zahl = (substring - (d * 24 * 60)).ToInteger();
WriteLine("zahl restl.Minuten: " # zahl);
h = (zahl / 60).ToInteger();
zahl = (zahl - (h * 60).ToInteger() );
WriteLine("zahl Minuten:" # zahl);

string substring = (d # " Tage " # h # " Stunden " # zahl #" Minuten");

WriteLine("Shaun_Zeit_in_Status: " # substring);

dom.GetObject("Shaun_Zeit_in_Status").State(substring);
}
else
{
dom.GetObject('Shaun_Zeit_in_Status').State('-');
}

pos=0;
posStart = '"mode": ';
posEnd = ', "batt';
pos = stdout.Find(posStart) + posStart.Length();
if(stdout.Find(posStart)>0)
{
substring = stdout.Substr(pos, 3).StrValueByIndex(posEnd, 0) ;
substring = substring.ToInteger();
dom.GetObject('Shaun_Modus').State(substring.ToInteger() );
WriteLine("Shaun_Modus: " # substring);
if (substring == 0) {dom.GetObject('Shaun_Modus_Text').State("Modus Auto");}
if (substring == 1) {dom.GetObject('Shaun_Modus_Text').State("Modus manuell");}
if (substring == 2) {dom.GetObject('Shaun_Modus_Text').State("Modus home");}
if (substring == 3) {dom.GetObject('Shaun_Modus_Text').State("Modus Demo");}
}
else
{
dom.GetObject('Shaun_Modus').State('-');
}

var temp = dom.GetObject('Shaun_Modus_Text').Value();
WriteLine("Shaun_Modus_Text: " # temp);

pos=0;
posStart = '"battery": ';
posEnd = ', "';
pos = stdout.Find(posStart) + posStart.Length();
!WriteLine("pos");
!WriteLine(pos);
!substring = stdout.Substr(pos, 10).StrValueByIndex(posEnd, 0) ;
substring = stdout.Substr(pos, 3).StrValueByIndex(posEnd, 0) ;
batt=substring;
substring = substring.ToInteger();
dom.GetObject('Shaun_Batterie').State(substring.ToInteger() );
!WriteLine("Shaun_Batterie: " # substring);
!batt=substring;
substring =substring + ' %';
if(stdout.Find(posStart)>0)
{
!WriteLine("Battery");
!WriteLine(substring);
dom.GetObject('Shaun_Batterie').State(substring.ToString(1));
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Shaun_Batterie;"#batt.ToString(1));
!WriteLine("Batterie ende!");
}
else
{
dom.GetObject('Shaun_Batterie').State('Variable nicht gesetzt');
}

pos=0;
posStart = '"hours": ';
posEnd = '}';
pos = stdout.Find(posStart) + posStart.Length();
if(stdout.Find(posStart)>0)
{
substring = stdout.Substr(pos, 10).StrValueByIndex(posEnd, 0) ;
substring =substring + 'h';
dom.GetObject('Shaun_Laufzeit').State(substring.ToString(1));
}
else
{
dom.GetObject('Shaun_Laufzeit').State(' ');
}

pos=0;
posStart = '"Timer": {"Status": ';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();
if(stdout.Find(posStart)>0)
{
substring = stdout.Substr(pos, 1).StrValueByIndex(posEnd, 0) ;

if (substring == 0) {dom.GetObject('Shaun_Time_Status').State("Deaktiviert");}
if (substring == 1) {dom.GetObject('Shaun_Time_Status').State("Aktiv");}
if (substring == 2) {dom.GetObject('Shaun_Time_Status').State("Standby");}
}
else
{
dom.GetObject('Shaun_Time_Status').State(' ');
}

var temp = dom.GetObject('Shaun_Time_Status').Value();
WriteLine("Shaun_Time_Status: " # temp);

pos=0;
posStart = '"next": {"date": "';
posEnd = '", "time":';
pos = stdout.Find(posStart) + posStart.Length();
if(stdout.Find(posStart)>0)
{
substring = stdout.Substr(pos, 10).StrValueByIndex(posEnd, 0) ;
dom.GetObject('Shaun_Time_Datum').State(substring.ToString(1));
}
else
{
dom.GetObject('Shaun_Time_Datum').State('-');
}

pos=0;
posStart = '"time": "';
posEnd = '", "unix":';
pos = stdout.Find(posStart) + posStart.Length();
if(stdout.Find(posStart)>0)
{
substring = stdout.Substr(pos, 8).StrValueByIndex(posEnd, 0) ;
dom.GetObject('Shaun_Time_Zeit').State(substring.ToString(1) );
}
else
{
dom.GetObject('Shaun_Time_Zeit').State('-');
}

WriteLine("Shaun_Time_Zeit: " # substring);

pos=0;
posStart = '"error_message": "';
posEnd = '", "date"';
pos = stdout.Find(posStart) + posStart.Length();
if(stdout.Find(posStart)>0)
{
substring = stdout.Substr(pos, 43).StrValueByIndex(posEnd, 0) ;
dom.GetObject('Shaun_Fehler').State(substring.ToString(1));
}
else
{
dom.GetObject('Shaun_Fehler').State('keine Fehlermeldung');
}

WriteLine("Shaun_Fehler: " # substring);

pos=0;
posStart = 'wlan": {"signal":';
posEnd = '}';
pos = stdout.Find(posStart) + posStart.Length();
if(stdout.Find(posStart)>0)
{
substring = stdout.Substr(pos, 10).StrValueByIndex(posEnd, 0) ;
dom.GetObject('Shaun_Wlan').State(substring.ToString() );
}
else
{
dom.GetObject('Shaun_Wlan').State(' ');
}

WriteLine("Shaun_Wlan: " # substring);

var temp = system.Date("%d.%m.%Y %H:%M:%S");
dom.GetObject('Shaun_LastSync').State(temp.ToString() );
WriteLine("lastsync " # temp);



Als Ausgabe bekomme ich:
Antwort: {"name": "Shaun", "id": "A614B5", "Status": {"Status": 2, "distance": 15, "stopped": false, "door": false, "duration": 1485, "mode": 0, "battery": 81, "hours": 27}, "Timer": {"Status": 1}, "blades": {"quality": 99, "hours": 2, "days": 0}, "wlan": {"signal": -78}, "Health": {"temperature": 36, "humidity": 36}, "clock": {"date": "2018-07-26", "time": "21:09:53", "unix": 1532639393}, "successful": true}
Shaun_Status_Text: ausgeschaltet ?
Stop: fals
24 Minuten M_duration
zahl 0:24
zahl h Gesamtstunden: 0
zahl d Tage:0
zahl restl.Minuten: 24
zahl Minuten:24
Shaun_Zeit_in_Status: 0 Tage 0 Stunden 24 Minuten
Shaun_Modus: 0
Shaun_Modus_Text: Modus Auto

Sieht dann so aus:
Der Dateianhang hm.jpg existiert nicht mehr.
Wie ihr seht, passt da einiges nicht.
Die Abfrage im Browser klappt einwandfrei:
hm.jpg

Ich hoffe irgend jemand von euch hat da Plan von und kann mir weiter helfen...
**Gardena R40Li Bj 2017**Gleitplatte**Lenkbares Heckrad von Geisi-tech**Robonect V5 mit V1.0_Beta8C**ALEXA-Einbindung**

Antworten

Zurück zu „Homematic-Nutzer“