! Robonect Statusabfrage per xml und system.Exec mit Test ! 0.2.3 ! %u0192nderungen: ! Variable *LastSync* - hinzugef¸gt ! Verwendete Variablen: ! vName + Akku Ladestand - als Zeichenkette ! vName + Betriebsart - als Werteliste ! vName + Betriebsstunden - als Zeichenkette ! vName + Betriebszustand - als Logikwert; wahr = gestoppt, falsch = gestartet ! vName + Distance - als Zeichenkette ! vName + Fehlermeldung - als Zeichenkette ! vName + Feuchte - als Zeichenkette ! vName + LastSync - als Zeichenkette ! vName + Messer Alter - als Zeichenkette ! vName + Messer Betriebsstunden - als Zeichenkette ! vName + Messerqualitaet - als Zeichenkette ! vName + Status - als Werteliste ! vName + Status seit - als Zeichenkette ! vName + Temperatur - als Zeichenkette ! vName + Timer Startzeit - als Zeichenkette ! vName + Timerstatus - als Werteliste ! vName + Verbindung - als Logikwert; wahr = Online, falsch = Offline ! vName + WLAN - als Zeichenkette ! ******************************************************** boolean vTestlauf = false; ! true: Ausgabe als WriteLine ohne Schreiben der Variablen; false: schreiben der Variablen ohne Ausgabe als WriteLine string vName = "Sileno"; ! Namen des Roboters f¸r die Variablen string vBenutzer = "admin"; ! Benutzername string vPasswort = "XXX"; ! Passwort string vIP = "192.168.178.XXX"; ! IP des Maehers ! ******************************************************** ! Entkommentieren der folgenden Zeilen und einmaliges starten schreibt die Werteliste in die Variablen ! anschlie%uFB02end wieder auskommentieren ! dom.GetObject(vName # " Betriebsart").ValueList("Auto;Manuell;Home;Demo"); ! dom.GetObject(vName # " Status").ValueList("Status wird ermittelt;parkt;mäht;sucht die Ladestation;lädt;wartet auf Umsetzen;6;Fehlerstatus;Schleifensignal verloren;9;10;11;12;13;14;15;abgeschaltet;schläft;wartet bis Tor auf"); ! dom.GetObject(vName # " Timerstatus").ValueList("Deaktiviert;Aktiv;Standby"); ! ToDo ! boolean vPing = false; string stderr = ""; string stdout = ""; string vStart = ""; string vEnde = ""; string vIndex = ""; string vUrl = "'http://" # vIP # "/xml?user=" # vBenutzer # "&pass=" # vPasswort # "&cmd=status'"; integer vStatus = 0; string vTempo = ""; system.Exec("ping -c 1 " # vIP,&stdout, &stderr); if (stdout.Contains("ms")) { vPing = true; if (vTestlauf) { vStart = "time="; vEnde = " ms"; vStart = stdout.Find(vStart) + vStart.Length(); vIndex = stdout.Substr(vStart, stdout.Find(vEnde) - vStart).ToInteger(); WriteLine("Der Ping dauerte " # vIndex # " Millisekunden."); } } else { if (vTestlauf) { WriteLine(vName # " ist Momentan nicht erreichbar."); } } if (vPing) { vPing = false; system.Exec("wget -q -O - " # vUrl, &stdout, &stderr); ! Erfolgreich ausgelesen? if (stdout.Contains("successful>true= 172800) {vTempo = (vIndex / 86400).ToInteger() # " Tage ";} else {if (vIndex >= 86400) {vTempo = "1 Tag ";} else {vTempo = "";}} vIndex = vTempo # (vIndex - 3600).ToTime().Format("%T"); if (vTestlauf){ WriteLine("Status seit " # vIndex); } else { if (dom.GetObject(vName # " Status seit")) { dom.GetObject(vName # " Status seit").State(vIndex); } else { WriteLine("Variable -" # vName # " Status seit- existiert nicht"); } } ! Betriebsart vStart = ""; vEnde = ""; vStart = stdout.Find(vStart) + vStart.Length(); vIndex = (stdout.Substr(vStart, stdout.Find(vEnde) - vStart)).ToInteger(); if (vTestlauf){ WriteLine("Betriebsart = " # vIndex); } else { if (dom.GetObject(vName # " Betriebsart")) { if (vIndex != dom.GetObject(vName # " Betriebsart").Value()) { dom.GetObject(vName # " Betriebsart").State(vIndex); } } else { WriteLine("Variable -" # vName # " Betriebsart- existiert nicht"); } } ! Akku Ladestand vStart = ""; vEnde = ""; vStart = stdout.Find(vStart) + vStart.Length(); vIndex = stdout.Substr(vStart, stdout.Find(vEnde) - vStart) # "%"; if (vTestlauf){ WriteLine("Akku Ladestand = " # vIndex); } else { if (dom.GetObject(vName # " Akku Ladestand")) { if (vIndex != dom.GetObject(vName # " Akku Ladestand").Value()) { dom.GetObject(vName # " Akku Ladestand").State(vIndex); } } else { WriteLine("Variable -" # vName # " Akku Ladestand- existiert nicht"); } } ! Betriebsstunden vStart = ""; vEnde = ""; vStart = stdout.Find(vStart) + vStart.Length(); vIndex = stdout.Substr(vStart, stdout.Find(vEnde) - vStart) # "h"; if (vTestlauf){ WriteLine("Betriebsstunden = " # vIndex); } else { if (dom.GetObject(vName # " Betriebsstunden")) { if (vIndex != dom.GetObject(vName # " Betriebsstunden").Value()) { dom.GetObject(vName # " Betriebsstunden").State(vIndex); } } else { WriteLine("Variable -" # vName # " Betriebsstunden- existiert nicht"); } } ! Timerstatus vStart = ""; vStart = stdout.Find(vStart) + vStart.Length(); vIndex = stdout.Substr(vStart, 1).ToInteger(); if (vTestlauf){ WriteLine("Timerstatus = " # vIndex); } else { if (dom.GetObject(vName # " Timerstatus")) { if (vIndex != dom.GetObject(vName # " Timerstatus").Value()) { dom.GetObject(vName # " Timerstatus").State(vIndex); } } else { WriteLine("Variable -" # vName # " Timerstatus- existiert nicht"); } } ! Messerqualität vStart = ""; vEnde = ""; vStart = stdout.Find(vStart) + vStart.Length(); vIndex = stdout.Substr(vStart, stdout.Find(vEnde) - vStart) # "%"; if (vTestlauf){ WriteLine("Messerqualität = " # vIndex); } else { if (dom.GetObject(vName # " Messerqualitaet")) { if (vIndex != dom.GetObject(vName # " Messerqualitaet").Value()) { dom.GetObject(vName # " Messerqualitaet").State(vIndex); } } else { WriteLine("Variable -" # vName # " Messerqualitaet- existiert nicht"); } } ! Messer Betriebsstunden vStart = "ty>"; vEnde = "")){ vStart = ""; vEnde = ""; vStart = stdout.Find(vStart) + vStart.Length(); vIndex = (stdout.Substr(vStart, stdout.Find(vEnde) - vStart).ToInteger() - 3600 * 1 + system.Date("%s").ToInteger().ToTime().IsDST()).ToTime().Format("%d.%m.%Y %T"); if (vTestlauf){ WriteLine("nächster Start = " # vIndex); } else { if (dom.GetObject(vName # " Timer Startzeit")) { if (vIndex != dom.GetObject(vName # " Timer Startzeit").Value()) { dom.GetObject(vName # " Timer Startzeit").State(vIndex); } } else { WriteLine("Variable -" # vName # " Timer Startzeit- existiert nicht"); } } } ! Fehlermeldung vStart = ""; if (stdout.Contains(vStart)) { vEnde = ""; vStart = stdout.Find(vStart) + vStart.Length(); vIndex = stdout.Substr(vStart, stdout.Find(vEnde) - vStart); } elseif (vStatus == 8) { vIndex = "Schleifensignal verloren"; } else { vIndex = "Kein Fehler"; } if (vTestlauf){ WriteLine("Fehlermeldung = " # vIndex); } else { if (dom.GetObject(vName # " Fehlermeldung")) { if (vIndex != dom.GetObject(vName # " Fehlermeldung").Value()) { dom.GetObject(vName # " Fehlermeldung").State(vIndex); } } else { WriteLine("Variable -" # vName # " Fehlermeldung- existiert nicht"); } } ! Online if (vTestlauf){ WriteLine(vName # " ist online"); } else { if (dom.GetObject(vName # " Verbindung")) { dom.GetObject(vName # " Verbindung").State(true); } else { WriteLine("Variable -" # vName # " Verbindung- existiert nicht"); } } } else { ! Offline if (vTestlauf){ WriteLine(vName # " ist offline"); } else { if (dom.GetObject(vName # " Verbindung")) { dom.GetObject(vName # " Verbindung").State(false); } else { WriteLine("Variable -" # vName # " Verbindung- existiert nicht"); } } } ! LastSync if (vTestlauf){ WriteLine("LastSync = " # system.Date("%Y.%m.%d %T")); } else { if (dom.GetObject(vName # " LastSync")) { dom.GetObject(vName # " LastSync").State(system.Date("%Y.%m.%d %T")); } else { WriteLine("Variable -" # vName # " LastSync- existiert nicht"); } } WriteLine("Habe fertig");