! 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";
vEnde = "";
vStart = stdout.Find(vStart) + vStart.Length();
vIndex = (stdout.Substr(vStart, stdout.Find(vEnde) - vStart)).ToInteger();
vStatus = vIndex;
if (vTestlauf){
WriteLine("Status = " # vIndex);
} else {
if (dom.GetObject(vName # " Status")) {
if (vIndex != dom.GetObject(vName # " Status").Value()) {
dom.GetObject(vName # " Status").State(vIndex);
}
} else {
WriteLine("Variable -" # vName # " Status- existiert nicht");
}
}
! Start nach
vStart = "";
vEnde = "";
vStart = stdout.Find(vStart) + vStart.Length();
vIndex = stdout.Substr(vStart, stdout.Find(vEnde) - vStart) # "m";
if (vTestlauf){
WriteLine("Start nach " # vIndex);
} else {
if (dom.GetObject(vName # " Distance")) {
if (vIndex != dom.GetObject(vName # " Distance").Value()) {
dom.GetObject(vName # " Distance").State(vIndex);
}
} else {
WriteLine("Variable -" # vName # " Distance- existiert nicht");
}
}
! Betriebszustand
vStart = "";
vEnde = "";
vStart = stdout.Find(vStart) + vStart.Length();
vIndex = stdout.Substr(vStart, stdout.Find(vEnde) - vStart);
if (vTestlauf){
WriteLine("Betriebszustand = " # vIndex);
} else {
if (dom.GetObject(vName # " Betriebszustand")) {
if (vIndex != dom.GetObject(vName # " Betriebszustand").Value()) {
dom.GetObject(vName # " Betriebszustand").State(vIndex);
}
} else {
WriteLine("Variable -" # vName # " Betriebszustand- existiert nicht");
}
}
! Status seit
vStart = "";
vEnde = "";
vStart = stdout.Find(vStart) + vStart.Length();
vIndex = stdout.Substr(vStart, stdout.Find(vEnde) - vStart).ToInteger();
if (vIndex >= 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");