Worx Landroid S700i (bzw. alle S-Modelle) mittels Windows-Software & IPS steuern

Hallo Freunde des gepflegten Rasens!
Nachdem ich oft Nutznießer Eurer Hilfe und Kenntnisse oder Skripte bin wollte ich etwas zurückgeben.
Ich habe jetzt eine funktionierende Variante um den Worx Landroid in IPS zu integrieren und wollte diese mit euch teilen:
(Geht nur mit Windows-Server, bzw. einem Windows-Rechner der die JSON für IPS zugänglich speichert)

Zuerst braucht Ihr aus dem Roboter-Forum die Software von Eisha, zu finden hier:
Desktop App (exe) – Google Drive

Diese liegt bei mir im Odner IP-Symcon/Landroid_Win_v15.
Das Programm selbst in den Autostart übernehmen und Zugangsdaten eingeben.
Dazu dann unter „Plugins“ die Haken setzen:

Das Programm kann minimiert werden.
Im Programmordner taucht nun eine CmdOut.json auf, hier kommen die Daten an.

Wir benötigen einige Variablen um den Status zu erfassen:

Diese lesen wir hiermit ein (ggf. den Programmpfad anpassen):

<?
$landroid = file_get_contents("C://IP-symcon/Landroid_Win_v15/CmdOut.json");

$data = json_decode($landroid, true);

$run = $data["dat"]["ls"];
If ($run == 0) {
SetValueString(10059 /*[Komponenten\Landroid\Landroid-Aktion]*/, "In Station (Idle)");}
Elseif ($run == 1) {
SetValueString(10059 /*[Komponenten\Landroid\Landroid-Aktion]*/, "In Station (Home)");}
Elseif ($run == 5) {
SetValueString(10059 /*[Komponenten\Landroid\Landroid-Aktion]*/, "Sucht Begrenzungsdraht");}
Elseif ($run == 7) {
SetValueString(10059 /*[Komponenten\Landroid\Landroid-Aktion]*/, "Mähen");}
Elseif ($run == 30) {
SetValueString(10059 /*[Komponenten\Landroid\Landroid-Aktion]*/, "Heimfahrt");}
Elseif ($run == 32) {
SetValueString(10059 /*[Komponenten\Landroid\Landroid-Aktion]*/, "Kantenschnitt");}
Elseif ($run == 33) {
SetValueString(10059 /*[Komponenten\Landroid\Landroid-Aktion]*/, "Suche Mähbereich");}
Elseif ($run == 34) {
SetValueString(10059 /*[Komponenten\Landroid\Landroid-Aktion]*/, "Pause / gestoppt");}

$signal = $data["dat"]["rsi"]; //Wifi-Signal
SetValueInteger(10063 /*[Komponenten\Landroid\Wifi-Signal]*/, $signal);
If ($signal <= -90) {
SetValueString(37303 /*[Komponenten\Landroid\Wifi-Signalgüte]*/, "Verbindung kaum möglich (-)");}
If (($signal >= -89) AND ($signal <=80)) {
SetValueString(37303 /*[Komponenten\Landroid\Wifi-Signalgüte]*/, "Signal unzuverlässig (6)");}
If (($signal >= -79) AND ($signal <=70)) {
SetValueString(37303 /*[Komponenten\Landroid\Wifi-Signalgüte]*/, "Signal ausreichend (5)");}
If (($signal >= -69) AND ($signal <=67)) {
SetValueString(37303 /*[Komponenten\Landroid\Wifi-Signalgüte]*/, "Signal normal (4)");}
If (($signal >= -66) AND ($signal <=60)) {
SetValueString(37303 /*[Komponenten\Landroid\Wifi-Signalgüte]*/, "Signal gut (3)");}
If (($signal >= -59) AND ($signal <=50)) {
SetValueString(37303 /*[Komponenten\Landroid\Wifi-Signalgüte]*/, "Signal exzellent (2)");}
If (($signal >= -49) AND ($signal <=30)) {
SetValueString(37303 /*[Komponenten\Landroid\Wifi-Signalgüte]*/, "Signal perfekt (1)");}

$akku = $data["dat"]["bt"]["p"];
SetValueInteger(16534 /*[Komponenten\Landroid\Ladestand Landroid]*/, $akku);

$akkutemp = $data["dat"]["bt"]["t"];
SetValueFloat(29048 /*[Komponenten\Landroid\Akkutemperatur Landroid]*/, $akkutemp);

$spannung = $data["dat"]["bt"]["v"];
SetValueFloat(37298 /*[Komponenten\Landroid\Akkuspannung Landroid]*/, $spannung);

$weg = $data["dat"]["st"]["d"];
SetValueInteger(29772 /*[Komponenten\Landroid\Gesamtstrecke Landroid]*/,$weg);

$zeit = $data["dat"]["st"]["b"];
SetValueFloat(40234 /*[Komponenten\Landroid\Arbeitszeit Landroid]*/, round((($zeit/60)/24),2));

$time = $data["cfg"]["tm"];
SetValueString(16535 /*[Komponenten\Landroid\Aktualisierungszeit]*/, $time);

$error = $data["dat"]["le"];
If ($error == 0) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "kein Fehler");}
Elseif ($error == 1) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Mäher festgefahren");}
Elseif ($error == 2) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Mäher angehoben");}
Elseif ($error == 3) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Draht fehlt");}
Elseif ($error == 4) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "ausserh. der Begrenzung");}
Elseif ($error == 5) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "wegen Regen gestoppt");}
Elseif ($error == 8) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Fehler Messermotor");}
Elseif ($error == 9) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Fehler Fahrmotor");}
Elseif ($error == 11) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Mäher umgekippt");}
Elseif ($error == 12) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Akku leer");}
Elseif ($error == 13) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Draht vertauscht");}
Elseif ($error == 14) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Akku Ladefehler");}
Elseif ($error == 15) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Station n. gefunden");}
Elseif ($error == 16) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Mäher gesperrt");}
Elseif ($error == 17) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Akkutemp. zu hoch");}
?>

Die Variablen-ID’s müsst Ihr durch Eure ersetzen. (Sollte klar sein, aber ganz, ganz früher wusste ich das auch mal nicht :slight_smile: )

Anschließend müssen wir eine zyklische Abfrage erstellen, generell gibts alle 10min ein Update der JSON, aber wenn sich der Status ändert, dann auch früher.

Das machen wir über den Timestamp der JSON-Datei, hier ggf. den Pfad und den Pfad zum Skript (IPS_RunScript) anpassen.:

<?
$datei = "C://IP-symcon/Landroid_Win_v15/CmdOut.json";
$zeit = filemtime ( $datei );
$zeit_alt = GetValueinteger(35210 /*[Komponenten\Landroid\Änderungsüberwachung Landroid CmdOut\Timestamp CmdOut]*/);
If ($zeit > $zeit_alt){
SetValueInteger(35210 /*[Komponenten\Landroid\Änderungsüberwachung Landroid CmdOut\Timestamp CmdOut]*/, $zeit);
IPS_RunScript(29044 /*[Komponenten\Landroid\Landroid_Read]*/);}
?>

Das o.g. Skript muss dann zyklisch ausgeführt werden, ich denke 10s reicht - das Skript ist klein und flott abgearbeitet und alle 10s ist schnell genug als Update. Timer wie im Screenshot anlegen. Das Landroid_Read Skript braucht keinen Timer, es wird nur ausgeführt, falls die JSON geändert wurde.

Um den Landroid zu steuern brauchen wir noch ein Skript.
(ich habe mich auf Start, Stop und Heimfahren beschränkt, Einstellungen mache ich mit der Desktop oder Android-App)

<?
$command = GetValueInteger(29053 /*[Komponenten\Landroid\Landroid-Command\Betriebsmodus Landroid]*/);
$cfg = array("cmd" => $command);

$Pfad = "C://IP-symcon/Landroid_Win_v15/CmdIn.json";
  $Attribut = "ab";
   $open = fopen($Pfad,$Attribut);          //Öffnen
   file_put_contents($Pfad, '');			//Datei leeren, sonst wird angehangen!)
   fwrite($open, json_encode($cfg));		//Daten schreiben
   fclose($open);                           //schließen  

echo json_encode($cfg);
?>

Zu guter Letzt fehlt noch ein Trigger, dieser startet das Landroid_Command Skript, wenn die „Steuervariable“, welche den Modus festlegt, aktualisiert wird. (Also nicht auf Variablenänderung sondern auf Aktualisierung setzen)

Ich nutze die IPS-App nicht, stattdessen geht bei mir alles in IPS-View, dort habe ich drei Buttons für „Start“, „Home“, „Stop“. Diese Buttons ändern die Variable „Betriebsmodus Landroid“ in 1, 2 oder 3. Diese Änderung führt dann das Command-Skript aus.
So siehts bei mir in IPS-View aus:

Nachdem der Befehl abgegeben wurde, wird der Timestamp der Datei von der Landroid-Desktop-App erfasst und nur 1x interpretiert, bis es einen neuen Timestamp gibt. Also kein Grund die Datei zu leeren oder löschen.

Ich würde mich über Feedback freuen, bzw schreibt mal wenn Ihr die Skripte nutzt.

Hier noch ein paar Quellen (ist ja ausser den Skripten usw. nicht zu 100% auf meinem Mist gewachsen.):

Roboter-Forum, Software von Eisha, ab Seite 48 gehts mit der aktuellen Version los:
Entwicklungsprojekt: Landroid-S Windows App

Landroid-Thread, ich hatte mal geplant den MQTT Broker zu nutzen - bringt mir aber so erstmal nichts:
Worx Landroid CSV wie Werte in einzelne Variablen schreiben

Hier noch wie die JSON erzeugt wird:
Daten als JSON ausgeben

Viel Spaß damit!

Gruß,
Maeffjus

Hier noch mit Push-Nachricht für Fehler (nachdem er eben einen Messerfehler hatte :wink: )

<?
$landroid = file_get_contents("C://IP-symcon/Landroid_Win_v15/CmdOut.json");


$data = json_decode($landroid, true);


$run = $data["dat"]["ls"];
If ($run == 0) {
SetValueString(10059 /*[Komponenten\Landroid\Landroid-Aktion]*/, "In Station (Idle)");}
Elseif ($run == 1) {
SetValueString(10059 /*[Komponenten\Landroid\Landroid-Aktion]*/, "In Station (Home)");}
Elseif ($run == 5) {
SetValueString(10059 /*[Komponenten\Landroid\Landroid-Aktion]*/, "Sucht Begrenzungsdraht");}
Elseif ($run == 7) {
SetValueString(10059 /*[Komponenten\Landroid\Landroid-Aktion]*/, "Mähen");}
Elseif ($run == 30) {
SetValueString(10059 /*[Komponenten\Landroid\Landroid-Aktion]*/, "Heimfahrt");}
Elseif ($run == 32) {
SetValueString(10059 /*[Komponenten\Landroid\Landroid-Aktion]*/, "Kantenschnitt");}
Elseif ($run == 33) {
SetValueString(10059 /*[Komponenten\Landroid\Landroid-Aktion]*/, "Suche Mähbereich");}
Elseif ($run == 34) {
SetValueString(10059 /*[Komponenten\Landroid\Landroid-Aktion]*/, "Pause / gestoppt");}

$signal = $data["dat"]["rsi"]; //Wifi-Signal
SetValueInteger(10063 /*[Komponenten\Landroid\Wifi-Signal]*/, $signal);
If ($signal <= -90) {
SetValueString(37303 /*[Komponenten\Landroid\Wifi-Signalgüte]*/, "Verbindung kaum möglich (-)");}
If (($signal >= -89) AND ($signal <=80)) {
SetValueString(37303 /*[Komponenten\Landroid\Wifi-Signalgüte]*/, "Signal unzuverlässig (6)");}
If (($signal >= -79) AND ($signal <=70)) {
SetValueString(37303 /*[Komponenten\Landroid\Wifi-Signalgüte]*/, "Signal ausreichend (5)");}
If (($signal >= -69) AND ($signal <=67)) {
SetValueString(37303 /*[Komponenten\Landroid\Wifi-Signalgüte]*/, "Signal normal (4)");}
If (($signal >= -66) AND ($signal <=60)) {
SetValueString(37303 /*[Komponenten\Landroid\Wifi-Signalgüte]*/, "Signal gut (3)");}
If (($signal >= -59) AND ($signal <=50)) {
SetValueString(37303 /*[Komponenten\Landroid\Wifi-Signalgüte]*/, "Signal exzellent (2)");}
If (($signal >= -49) AND ($signal <=30)) {
SetValueString(37303 /*[Komponenten\Landroid\Wifi-Signalgüte]*/, "Signal perfekt (1)");}

$akku = $data["dat"]["bt"]["p"];
SetValueInteger(16534 /*[Komponenten\Landroid\Ladestand Landroid]*/, $akku);

$akkutemp = $data["dat"]["bt"]["t"];
SetValueFloat(29048 /*[Komponenten\Landroid\Akkutemperatur Landroid]*/, $akkutemp);

$spannung = $data["dat"]["bt"]["v"];
SetValueFloat(37298 /*[Komponenten\Landroid\Akkuspannung Landroid]*/, $spannung);

$weg = $data["dat"]["st"]["d"];
SetValueInteger(29772 /*[Komponenten\Landroid\Gesamtstrecke Landroid]*/,$weg);

$zeit = $data["dat"]["st"]["b"];
SetValueFloat(40234 /*[Komponenten\Landroid\Arbeitszeit Landroid]*/, round((($zeit/60)/24),2));

$time = $data["cfg"]["tm"];
SetValueString(16535 /*[Komponenten\Landroid\Aktualisierungszeit]*/, $time);

$notification = GetValueBoolean(37311 /*[Komponenten\Landroid\Push_Fehlermeldung]*/);
$error = $data["dat"]["le"];
If ($error == 0) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "kein Fehler");
SetValueBoolean(16539 /*[Komponenten\Landroid\Push_Fehlermeldung]*/, 0);}
Elseif ($error == 1) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Mäher festgefahren");}
Elseif ($error == 2) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Mäher angehoben");}
Elseif ($error == 3) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Draht fehlt");}
Elseif ($error == 4) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "ausserh. der Begrenzung");}
Elseif ($error == 5) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "wegen Regen gestoppt");
SetValueBoolean(37311 /*[Komponenten\Landroid\Push_Fehlermeldung]*/, 0);}
Elseif ($error == 8) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Fehler Messermotor");}
Elseif ($error == 9) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Fehler Fahrmotor");}
Elseif ($error == 11) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Mäher umgekippt");}
Elseif ($error == 12) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Akku leer");}
Elseif ($error == 13) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Draht vertauscht");}
Elseif ($error == 14) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Akku Ladefehler");}
Elseif ($error == 15) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Station n. gefunden");}
Elseif ($error == 16) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Mäher gesperrt");}
Elseif ($error == 17) {
SetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/, "Akkutemp. zu hoch");}

If (($error != 0) and ($error != 5) and ($notification == 0)){
	$fehlermeldung = GetValueString(10068 /*[Komponenten\Landroid\Landroid Fehlerzustand]*/);
	$pushN= "Mäherfehler: " . $fehlermeldung;
	WFC_PushNotification(10810 /*[WebFront Configurator]*/, 'Mähbert hat ein Problem', $pushN , '', 0);
	SetValueBoolean(37311 /*[Komponenten\Landroid\Push_Fehlermeldung]*/, 1);}
?>

Und ja, er heißt Mähbert - unsere Katze ist der Klöngsbert, da lag das nahe.

Gruß,

Maeffjus

hallo
Gibt es eine Möglichkeit, das auch mit den Landroid M Modellen zu machen?
bin mit der Sufu nicht fündig geworden, wäre für tipps dankbar.
Insbesondere interessiert mich die Einbindung in IPSView.
Bisher bin ich bei der Eingabe der MAC in die DesktopApp von Eisha gescheitert.
Danke

Gerade aktuell im roboter-forum.de beantwortet worden ;).

danke für den Hinweis.
geht noch nicht, kann es vielleicht dort klären, melde mich wieder

Die M-Modelle haben doch eine Web-Oberfläche oder?

Nein. Nur eine android App mit den gleichen Einstellmöglichkeiten wie am Gerät.
das Entwicklungsprojekt: Landroid-S Windows App von Eisha in
Entwicklungsprojekt: Landroid-S Windows App - Landroid S-Modelle - Roboter-Forum.com
ist sowas, das bringe ich aber (noch) nicht zum Laufen.

Es war eine Odysee.

  • für die DeskApp benötigt man die Beta 5.xx,
  • für die Beta eine Registrierung, da
  • Für Beta 5.xx zwingend ein Iphone mit IOS größer 10.0 benötigt wird ging das auf meinem Iphone 4 nicht.
  1. Also Iphone 6 besorgt, auf IOS 11.x upgedatet.
  2. Bei worx registriert
  3. Worx Software hat mein Modell trotzdem abgelehnt, die haben aber schnell reagiert und es freigeschalten
  4. Beta test beantragt und bekommen
  5. FW 5.x installiert (nach mehreren Versuchen und verschiedenen Usb Sticks)

Dann gings normal weiter mit deskttop App und der Anleitung von Maeffjus.
Jetzt fehlt noch die Implementierung in IPSView

Das alles bei derzeit 37 Grad, ich werde Euch dann (ein paar Tage) das Ergebnis zeigen.
Sieht sehr gut aus, herzlichen Dank an Maeffjus und Eisha
lg Walter

Hallo Maeffjus

vielen dank für das script.

Funktioniert alles soweit :slight_smile:

jetzt muss ich nur noch mein „Körmet“ im Garten installieren :slight_smile:

Danke

PS. Eine Frage hätte ich noch, den Regensensor kann mann aktuell noch nicht auslesen oder?
Dann hätte man einen Regensor in IPS :slight_smile: Zudem wäre es cool wenn man destatus vom regensensor ändern kann.
Z.b Regensesnor auf dem Dach meldet Regen und setzt dann den Regensensor vom Worx auch auf Tru damit startet sein Regenprogramm mit Verzögerung.

Hallo Maeffjus,

ich habe Deine Skripte entsprechend Deiner Anleitung bei mir eingerichtet und alles hat sofort funktioniert.
TOP Arbeit und sehr gute Erklärung, für Anwender wie mich, die nicht alle Insider Begriffe verstehen :slight_smile:

Besten Dank !!!
Gerry

Hi Leute,
leider habe ich in der letzten Zeit keine Mails mit Updates bekommen.
Sonst hätte ich schon viel eher geantwortet.

Es freut mich, dass alles funktioniert und offenbar alle happy damit sind.
Übrigens auch interessant zu wissen, wieviele von euch einen Landroid „fahren“ :wink:

Noch was am Rande: Die Steuerung ist ab- und an etwas „tricky“. Leider reagiert der Landroid-Server nicht immer, vor allem wenn er gerade „Rückgemeldet“ hat. Daher kanns oft sein, dass er nicht reagiert. Aber letzten Endes wollen wir doch nur wissen was der Kleine macht…
Leider ist eine Kommunikation APP/PC–>Landroid nicht möglich. Diese läuft immer über APP/PC–>WORX Server–>Landroid.

@Padi2055: Ich wüsste es nicht, wenn überhaupt kannst Du nur den Status „Regenverzögerung“ auslesen. Allerdings ist dieser auch ggf. genau im Umfang der Verzögerung selbst ungenau.

Allerdings ist es ja sowieso in 2-3 Wochen spätestens Zeit den Mäher zur Winterruhe zu schicken.

Gruß,
Maeffjus

hallo Zusammen, ich habe seit kurzem auch den landroid S im haus.
Doch leider funktioniert die Anmeldung nicht weder bei der V15 noch bei der V16 er sagt dauernd "der remoteserver hat einen Fehler zurückgegeben: (404) nicht gefunden.
Auf dem Handy läuft die app und deren Anmeldung funktioniert auf der win Maschine nicht!!??
Hat jemand eine Idee?

LG Reblade

Hallo hab noch die Version 19 probiert …die läuft— TIPP: beim Anmelden wird nicht der eigne Namen gewünscht sonder der vom Landroid…meiner heißt OSCAR!!

LG

Hi Leute,
hier noch eine Aktualisierung.
Ich lasse mir den Status über IPS-View nun mit dem Akkufüllstand anzeigen.
Daher sind die Meldungen angepasst, Ihr müsst also die passenden Symbole auswählen.
Der Akkustand bzw. dessen Anzeige basiert übrigens auf der (bei mir) real genutzten Akkuspanne.
Der Landroid fährt ja nur bis ca. 37-39% und kommt dann heim, analog wird der Akku dann leer angezeigt.

Hier der Code:

<?
exec ("sudo smbclient //192.168.1.51/d$ 24M10g82! -W g-net_server -U administrator  -c 'get ServerFolders\Haussteuerung\Landroid_Win\CmdOut.json CmdOut.json'");
$landroid = file_get_contents("CmdOut.json");


$data = json_decode($landroid, true);

$akku = $data["dat"]["bt"]["p"];
SetValueInteger(16534, $akku);

$run = $data["dat"]["ls"];
If ($run == 0) {
SetValueString(10059, "In Station (Idle)");
    If ($akku >=87.5){ 
    SetValueInteger(33105, 3);}
    If (($akku <87.5) and ($akku >=75)){ 
    SetValueInteger(33105, 4);}
    If (($akku <75) and ($akku >=62.5)){ 
    SetValueInteger(33105, 5);}
    If (($akku <62.5) and ($akku >=50)){ 
    SetValueInteger(33105, 6);}
    If (($akku <50)){ 
    SetValueInteger(33105, 7);}
    }
Elseif ($run == 1) {
SetValueString(10059, "In Station (Home)");
 If ($akku >=87.5){ 
    SetValueInteger(33105, 3);}
    If (($akku <87.5) and ($akku >=75)){ 
    SetValueInteger(33105, 4);}
    If (($akku <75) and ($akku >=62.5)){ 
    SetValueInteger(33105, 5);}
    If (($akku <62.5) and ($akku >=50)){ 
    SetValueInteger(33105, 6);}
    If (($akku <50)){ 
    SetValueInteger(33105, 7);}}
Elseif ($run == 5) {
SetValueString(10059, "Sucht Begrenzungsdraht");
SetValueInteger(33105, 2);}
Elseif ($run == 7) {
SetValueString(10059, "Mähen");
 If ($akku >=87.5){ 
    SetValueInteger(33105, 1);}
    If (($akku <87.5) and ($akku >=75)){ 
    SetValueInteger(33105, 8);}
    If (($akku <75) and ($akku >=62.5)){ 
    SetValueInteger(33105, 9);}
    If (($akku <62.5) and ($akku >=50)){ 
    SetValueInteger(33105, 10);}
    If (($akku <50)){ 
    SetValueInteger(33105, 11);}}
Elseif ($run == 30) {
SetValueString(10059, "Heimfahrt");
SetValueInteger(33105, 2);}
Elseif ($run == 32) {
SetValueString(10059, "Kantenschnitt");
SetValueInteger(33105, 1);}
Elseif ($run == 33) {
SetValueString(10059, "Suche Mähbereich");
SetValueInteger(33105, 1);}
Elseif ($run == 34) {
SetValueString(10059, "Pause / gestoppt");
If ($akku >=87.5){ 
    SetValueInteger(33105, 0);}
    If (($akku <87.5) and ($akku >=75)){ 
    SetValueInteger(33105, 12);}
    If (($akku <75) and ($akku >=62.5)){ 
    SetValueInteger(33105, 13);}
    If (($akku <62.5) and ($akku >=50)){ 
    SetValueInteger(33105, 14);}
    If (($akku <50)){ 
    SetValueInteger(33105, 15);}}



$signal = $data["dat"]["rsi"]; //Wifi-Signal
SetValueInteger(10063, $signal);
If ($signal <= -90) {
SetValueString(37303, "Verbindung kaum möglich (-)");}
If (($signal >= -89) and ($signal <=80)) {
SetValueString(37303, "Signal unzuverlässig (6)");}
If (($signal >= -79) and ($signal <=70)) {
SetValueString(37303, "Signal ausreichend (5)");}
If (($signal >= -69) and ($signal <=67)) {
SetValueString(37303, "Signal normal (4)");}
If (($signal >= -66) and ($signal <=60)) {
SetValueString(37303, "Signal gut (3)");}
If (($signal >= -59) and ($signal <=50)) {
SetValueString(37303, "Signal exzellent (2)");}
If (($signal >= -49) and ($signal <=30)) {
SetValueString(37303, "Signal perfekt (1)");}



$akkutemp = $data["dat"]["bt"]["t"];
SetValueFloat(29048, $akkutemp);

$spannung = $data["dat"]["bt"]["v"];
SetValueFloat(37298, $spannung);

$weg = $data["dat"]["st"]["d"];
SetValueInteger(29772,$weg);

$zeit = $data["dat"]["st"]["b"];
SetValueFloat(40234, round((($zeit/60)/24),2));

$time = $data["cfg"]["tm"];
SetValueString(16535, $time);

$notification = GetValueBoolean(37311);
$error = $data["dat"]["le"];

If ($error !=0) {
If ($akku >=87.5){ 
    SetValueInteger(33105, 0);}
    If (($akku <87.5) and ($akku >=75)){ 
    SetValueInteger(33105, 12);}
    If (($akku <75) and ($akku >=62.5)){ 
    SetValueInteger(33105, 13);}
    If (($akku <62.5) and ($akku >=50)){ 
    SetValueInteger(33105, 14);}
    If (($akku <50)){ 
    SetValueInteger(33105, 15);}}
If ($error == 0) {
SetValueString(10068, "kein Fehler");
SetValueBoolean(37311, False);}
Elseif ($error == 1) {
SetValueString(10068, "Mäher festgefahren");}
Elseif ($error == 2) {
SetValueString(10068, "Mäher angehoben");}
Elseif ($error == 3) {
SetValueString(10068, "Draht fehlt");}
Elseif ($error == 4) {
SetValueString(10068, "ausserh. der Begrenzung");}
Elseif ($error == 5) {
SetValueString(10068, "wegen Regen gestoppt");
SetValueBoolean(37311, False);}
Elseif ($error == 8) {
SetValueString(10068, "Fehler Messermotor");}
Elseif ($error == 9) {
SetValueString(10068, "Fehler Fahrmotor");}
Elseif ($error == 11) {
SetValueString(10068, "Mäher umgekippt");}
Elseif ($error == 12) {
SetValueString(10068, "Akku leer");}
Elseif ($error == 13) {
SetValueString(10068, "Draht vertauscht");}
Elseif ($error == 14) {
SetValueString(10068, "Akku Ladefehler");}
Elseif ($error == 15) {
SetValueString(10068, "Station n. gefunden");}
Elseif ($error == 16) {
SetValueString(10068, "Mäher gesperrt");}
Elseif ($error == 17) {
SetValueString(10068, "Akkutemp. zu hoch");}
Elseif ($error == 99) {
SetValueString(10068, "Winterschlaf");}

If (($error != 0) and ($error != 5) and ($notification == False)){
	$fehlermeldung = GetValueString(10068);
	$pushN= "Mäherfehler: " . $fehlermeldung;
	WFC_PushNotification(10810, 'Mähbert hat ein Problem', $pushN , '', 0);
	SetValueBoolean(37311, True);}
?>

Gruß,
MaeffjusX0pr worx-landroid-s700i-wr115mi_OFF.pngX25pr worx-landroid-s700i-wr115mi_OFF.pngX50pr worx-landroid-s700i-wr115mi_OFF.pngX75pr worx-landroid-s700i-wr115mi_OFF.png0pr worx-landroid-s700i-wr115mi_OFF.png25pr worx-landroid-s700i-wr115mi_OFF.png50pr worx-landroid-s700i-wr115mi_OFF.png75pr worx-landroid-s700i-wr115mi_OFF.png100pr worx-landroid-s700i-wr115mi_OFF.pngworx-0pr-landroid-s700i-wr115mi_MOW.png

Hier noch der Rest!
Für den Fehlerfall gibt es eine „blasse“ und eine „kräftige“ Variante (Batteriefarbe)

worx-25pr-landroid-s700i-wr115mi_MOW.pngworx-50pr-landroid-s700i-wr115mi_MOW.pngworx-75pr-landroid-s700i-wr115mi_MOW.pngworx 0pr-landroid-s700i-wr115mi_Charge.pngworx 25pr-landroid-s700i-wr115mi_Charge.pngworx 50pr-landroid-s700i-wr115mi_Charge.pngworx 75pr-landroid-s700i-wr115mi_Charge.png

Hi Maeffjus,

kannst du mir helfen?

ich kann meinen Worx nicht starten von ips.

habe eine Variable mit Start Stop und Home.
Dahinter steht 0,1,2 dieser wird auch in das script geschrieben.

Aber er macht nichts leider konnte ich nicht sehen was da geschrieben werden muss.

Grüße

Hallo!

irgendwie bekomm ich die steuerung nicht hin, bekomme alle daten vom robi aber wenn ich auf start gehe dann tut sich nichts …was mach ich hier falsch?

lg
christian

Hallo Christian,
ich benutze das Skript leider selbst nicht mehr - es gibt ja einen MQTT-Broker und ein Modul dazu.
Ich weiß leider nicht ob das auch mit Windows funktioniert, aber wieso auch nicht.
Leider kann ich Dir also nicht mehr helfen… Sorry :frowning:
Gruß,
Matthias