Irgendwie wird der Ur-Thread langsam unübersichtlich.
Ich versuche hier mal "meine Version" kontinuierlich zu pflegen da sich die API ja doch noch etwas ab und an erweitert.
Die gesamte Version basiert auf der Version von Timberland.
aktuell basiert die Version auf:
- system.exec
- einem CuxD Ping-Device an dem die Variablen hängen
- HM-Variablen deklarierbar
Jeweils anzupassen:
- Variablennamen wenn geändert (suchen&ersetzen)
- IP-Adresse !
Variablen: Zusätzlich noch "Dolly-WLAN", Typ Zahl
Programm:
alle x minuten script ausführen
Script:
Code: Alles auswählen
! Orginal von timberland http://www.robonect.de/viewtopic.php?f=13&t=77
! Erweitert Mr.Lee
! v 0.1:
! - Variablen nicht mehr als string sondern Zahl oder Werteliste
! - Anpassungen beim Erstellen substring
! v 0.2: (Firmware 0.5)
! - Erweiterung um Status Timer, nächster Timer
! v 0.3: (Firmware0.7)
! - Erweiterung um letzte Laufzeit "Duration"
! - umgestellt auf xml
!v 0.4: (Firmware 0.8)
!- Bugfix Timer Date
!v 0.4.1: (Firmware 0.8)
!- Bugfix Timer Start
!v 0.4.2
! _Variablen angepasst
!v 0.4.4 Version 0.8RC5
!- Timer Ende korrigiert
!v 0.4.5
! - WLAN ergänzt
string Url='http://192.168.1.98/xml?cmd=status';
var posStart;
var posEnd;
var substring;
var posValueStart;
var posValueEnd;
string stderr;
var stdout;
system.Exec("wget -q -O - "#Url, &stdout, &stderr);
WriteLine("Abrufen");
WriteLine(stdout);
!Status auslesen
posStart = '<status><status>';
posEnd = '/status';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart+1;
substring = stdout.Substr(posValueStart, posValueEnd) ;
dom.GetObject('Dolly-Status').State(substring);
WriteLine('Status: ' # substring);
!Laufzeit auslesen
posStart = '<duration>';
posEnd = '/duration';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart+1;
substring = stdout.Substr(posValueStart, posValueEnd);
substring = substring.ToInteger()/60;
dom.GetObject('Dolly-aktuelle Zeit').State(substring);
WriteLine('Laufzeit: '#substring);
!Modus auslesen
posStart = '<mode>';
posEnd = '/mode';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart+1;
substring = stdout.Substr(posValueStart, posValueEnd) ;
dom.GetObject('Dolly-Modus').State(substring);
WriteLine('Modus: ' # substring);
!Battery auslesen
posStart = '<battery>';
posEnd = '/battery';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart+1;
substring = stdout.Substr(posValueStart, posValueEnd) ;
dom.GetObject('Dolly-Battery').State(substring);
WriteLine('Battery: '# substring);
!Betriebszeit auslesen
posStart = '<hours>';
posEnd = '/hours';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart+1;
substring = stdout.Substr(posValueStart, posValueEnd) ;
dom.GetObject('Dolly-Betriebsstunden').State(substring.ToString(1));
WriteLine('Betriebsstunden' # substring);
!Timerstatatus auslesen
posStart = '<timer><status>';
posValueStart = stdout.Find(posStart) + posStart.Length();
substring = stdout.Substr(posValueStart, 1) ;
dom.GetObject('Dolly-Timer').State(substring);
if (substring.ToInteger()==2) {
posStart = '<next><date>';
posEnd = '/date';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart+1;
substring = stdout.Substr(posValueStart, posValueEnd) ;
dom.GetObject('Dolly-Timer_Date').State(substring);
WriteLine('Timer_Date: '# substring);
posStart = '<time>';
posEnd = '/time';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart+1;
substring = stdout.Substr(posValueStart, posValueEnd) ;
dom.GetObject('Dolly-Timer_Time').State(substring);
WriteLine('Timer_Time: '# substring);
} else {
if (substring.ToInteger()==0) {
dom.GetObject('Dolly-Timer_Date').State("deaktiviert");
dom.GetObject('Dolly-Timer_Time').State("deaktiviert");
} else {
dom.GetObject('Dolly-Timer_Date').State("aktiv");
dom.GetObject('Dolly-Timer_Time').State("aktiv");
}
}
!WLANauslesen
posStart = '<signal>';
posEnd = '/signal';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart+1;
substring = stdout.Substr(posValueStart, posValueEnd) ;
dom.GetObject('Dolly-WLAN').State(substring);
WriteLine('WLAN: ' # substring);
viewtopic.php?f=13&t=362&p=2656#p2655
Modus des Mähers setzen
Je Modus eine Virtuelle Taste als auslösen (oder halt Events...Terrassentür auf löst Modus Feierabend aus etc...)
Code: Alles auswählen
string stderr;
string stdout;
string url="http://192.168.1.98/xml?cmd=mode&mode=auto";
system.Exec("wget -q -O - "#url, &stdout, &stderr);
Auto-Home bei manuellem Betrieb
viewtopic.php?f=13&t=185
Jobs definieren und starten
viewtopic.php?f=13&t=141&p=855#p855
Fehler abfragen und mail senden
..noch nicht umgesetzt..
bis denne
Mr.Lee