[v0.4.5] Homematic-Einbindung XML-Version

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

Moderator: Lampi

Benutzeravatar
PaulMerkelbach
Forum-Nutzer
Beiträge: 20
Registriert: Di 20. Sep 2016, 15:42
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 6.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.1)
Robonect Firmware: V 1.2

Re: [v0.4.5] Homematic-Einbindung XML-Version

Beitrag von PaulMerkelbach »

da unklar ist, welches Skript deine Ausgangsbasis war, kopiere doch den relevanten Teil hier rein, oder, noch besser das ganze Skript
Paul
"Schäfchen" Gleitteller, FTA-Heckrad, Hütte
API-Steuerung mit Homematic

Cool-Mann
Forum-Nutzer
Beiträge: 13
Registriert: So 9. Okt 2016, 21:35

Re: [v0.4.5] Homematic-Einbindung XML-Version

Beitrag von Cool-Mann »

Ich verwende das Skript aus diesem Faden.
Die einzige Änderung ist der Einbau einen Auswahl ob die CCU oder CUxD das Auslesen übernehmen soll (Zeile 34 bis 40)

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
!  Jürgen Schulte
! - Auwahl zwischen CCU oder CUxD eingefügt

! IP anpassen
string Url='http://192.168.19.46/xml?cmd=status';
var posStart;
var posEnd;
var substring;
var posValueStart;
var posValueEnd;
string stderr;
var stdout;

! CCU (bei Verwendung für die nächste Zeile das "!" entfernen. Achtung: nur CCU oder CUxD verwenden.)
!system.Exec("wget -q -O - "#Url, &stdout, &stderr);

! CUxD (bei Verwendung für die nächste drei Zeile das "!" entfernen. Achtung: nur CCU oder CUxD verwenden.)
dom.GetObject("CUxD.CUX2801001:6.CMD_SETS").State("wget -q -O - '"#Url#"'");
dom.GetObject("CUxD.CUX2801001:6.CMD_QUERY_RET").State(1);
string stdout= dom.GetObject("CUxD.CUX2801001:6.CMD_RETS").State();

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('VAR_Husky_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('VAR_Husky_letzte_Laufzeit').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('VAR_Husky_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('VAR_Husky_Batterie').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('VAR_Husky_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('VAR_Husky_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('VAR_Husky_TimerDate').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('VAR_Husky_TimerTime').State(substring);
    WriteLine('Timer_Time: '# substring);
} else {
   if (substring.ToInteger()==0) {
      dom.GetObject('VAR_Husky_TimerDate').State("deaktiviert");
      dom.GetObject('VAR_Husky_TimerTime').State("deaktiviert");
   } else {
      dom.GetObject('VAR_Husky_TimerDate').State("aktiv");
      dom.GetObject('VAR_Husky_TimerTime').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('VAR_Husky_WLAN').State(substring);
WriteLine('WLAN: ' # substring);

Zur Ergänzung des Problems. Husky war gerade unterwegs und der Status "mäht" wurde korrekt angezeigt. Jetzt ist er in Der Ladestation und es wird "parkt" angezeigt. Wenn er sich jetzt schlafen legt (17) wird unter Status nichts angezeigt.
Gruss aus Asbach
Jürgen
Husquana 330x, MSW-Software: 430X, MSW-Version: 7.04.00, SUB-Version: 6.00.00
Robonect Hx Rev.2, Firmware Release V0.9 RC2

Benutzeravatar
PaulMerkelbach
Forum-Nutzer
Beiträge: 20
Registriert: Di 20. Sep 2016, 15:42
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 6.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.1)
Robonect Firmware: V 1.2

Re: [v0.4.5] Homematic-Einbindung XML-Version

Beitrag von PaulMerkelbach »

ich bin kein Spezialist, aber ich würde versuchen dem Fehler auf die Spur zu kommen durch die Einfügung von WriteLine Zeilen. Dann das Skript testen und ggf. die Ausgabe hier kopieren

posStart = '<status><status>';
posEnd = '/status';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart+1;

WriteLine("posStart: " # posStart);
WriteLine("posEnd: " # posEnd);
WriteLine("posValueStart: " # posValueStart);
WriteLine("posValueEnd: " # posValueEnd);

substring = stdout.Substr(posValueStart, posValueEnd) ;
"Schäfchen" Gleitteller, FTA-Heckrad, Hütte
API-Steuerung mit Homematic

Cool-Mann
Forum-Nutzer
Beiträge: 13
Registriert: So 9. Okt 2016, 21:35

Re: [v0.4.5] Homematic-Einbindung XML-Version

Beitrag von Cool-Mann »

Danke.
Werde ich versuchen.

Gruss aus Asbach
Jürgen
Husquana 330x, MSW-Software: 430X, MSW-Version: 7.04.00, SUB-Version: 6.00.00
Robonect Hx Rev.2, Firmware Release V0.9 RC2

Antworten

Zurück zu „Homematic-Nutzer“