Homematic - Einbindung

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

Moderator: Lampi

huwahu
Forum-Anfänger
Beiträge: 9
Registriert: Sa 14. Mai 2016, 13:00
Wohnort: Korntal
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2015
Robonect-Modul: Robonect Hx (Rev.3)
Robonect Firmware: V0.9

Re: Homematic - Einbindung

Beitrag von huwahu »

Das wäre supi
Automower: R40Li MSW-Version: 5.01.00 Sub-Version: 5.00.00

Tobias78
erfahrener Forum-Nutzer
Beiträge: 60
Registriert: So 31. Jul 2016, 17:05
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2012
Robonect-Modul: Robonect H30x (Rev.0)
Robonect Firmware: 1.0 Beta 2

Re: Homematic - Einbindung

Beitrag von Tobias78 »

Hier kommt meine Homeputer Anbindung:

Code: Alles auswählen

//! ============================================================
//! OBJEKT Anz_Sys_eShawn
//! ============================================================
//! OBJEKT-TYP              : Zeichen
//! BEZEICHNUNG             : Anz_Sys_eShawn
//! STARTWERT               :
//! ------------------------------------------------------------
//! AUSFÜHRUNGSINTERVALL    : jede Minute
//! AUSFÜHRUNG BEI EINGABE  : ja
//! AUSFÜHRUNG BEI EMPFANG  : nein
//! AUSFÜHRUNG BEI ÄNDERUNG : nein
//! ------------------------------------------------------------
//!
//! ============================================================
//! VARIABLENDEFINITIONEN
//! ============================================================
//! NAME                TYP                 STARTWERT
//! ------------------------------------------------------------
//! Status              Zeichen             Variable nicht gesetzt
//! Modus               Zeichen             Variable nicht gesetzt
//! Alt                 Zeichen
//! eShawn_STATUS_JSON  Zeichen
//! Sonderzeichen       Zeichen             "
//! Makro_Aktiv         EAGeraet
//! Abspielen           Zeichen
//! Anweisung           Zeichen
//! Fehler              EAGeraet            aus


wenn Uhrzeit =* "00:01:00" ODER Uhrzeit =* "00:03:00" ODER Uhrzeit =* "00:05:00" ODER Uhrzeit =* "00:07:00" oder Uhrzeit =* "00:09:00" dann
	verlassen
endewenn

wenn Makro_Aktiv = 1 dann
	Makro_Aktiv := 0
	verlassen
endewenn
Makro_Aktiv := 1
GetSite("http://192.168.0.6/json?cmd=status",80,eShawn_STATUS_JSON)
warte("00:00:10")
eShawn_STATUS_JSON := Ersetzen(eShawn_STATUS_JSON,Sonderzeichen,"")
eShawn_STATUS_JSON := Ersetzen(eShawn_STATUS_JSON,"status: {","")
Status := TEXTZWISCHEN(eShawn_STATUS_JSON,"status: ",",")
Modus := TEXTZWISCHEN(eShawn_STATUS_JSON,"mode: ",",")

wenn Status = "0" dann
	Status:= "schläft"
endewenn
wenn Status = "1" dann
	Status:= "parkt"
endewenn
wenn Status = "2" dann
	Status:= "mäht"
endewenn
wenn Status = "3" dann
	Status:= "sucht die Ladestation"
endewenn
wenn Status = "4" dann
	Status:= "lädt auf"
endewenn
wenn Status = "5" dann
	Status:= "sucht"
endewenn
wenn Status = "7" dann
	Status:= "Fehler!"
endewenn
wenn Status = "8" dann
	Status:= "Schleife verloren!"
endewenn
//***************************
wenn Modus = "0" dann
	Modus:= "Auto"
endewenn
wenn Modus = "1" dann
	Modus:= "Manu"
endewenn
wenn Modus = "2" dann
	Modus:= "Home"
endewenn
wenn Modus = "3" dann
	Modus:= "Demo"
endewenn
//*****************************************
Wenn Status = "Fehler!" ODER Status = "Schleife verloren!" dann
	GetSite("http://192.168.0.6/json?cmd=error",80,eShawn_STATUS_JSON)
	warte("00:00:05")
	eShawn_STATUS_JSON := Ersetzen(eShawn_STATUS_JSON,Sonderzeichen,"")
	Status := TEXTZWISCHEN(eShawn_STATUS_JSON,"error_message:",",")
	Fehler:=1
	SONST
	Fehler:=0
endewenn

//*****************************************
Selbst:="Status: "+Status+" im "+Modus+ "-Modus"
//*****************************************
Makro_Aktiv := 0
Hiermit steht dann im Objekt Anz_Sys_eShawn z.B. : Status: Mäht im Auto-Modus.
Bis hier ging das "Pflichtmakro".
IP vom eigenen Schaf (eShawn) muss natürlich angepasst werden.
Jetzt kommt die Kür (nur mit umfangreichen Anpassungen nutzbar!):

Code: Alles auswählen

wenn Status = "maeht" UND (Textposition(MAKRO_CCU_Wetterdaten_abrufen.Wetter_Windbedingungen,"Regen")>0 ODER (Textposition(MAKRO_CCU_Wetterdaten_abrufen.Wetter_Windbedingungen,"Niesel")>0 ODER (Textposition(MAKRO_CCU_Wetterdaten_abrufen.Wetter_Windbedingungen,"Gewitter")>0 ODER (Textposition(MAKRO_CCU_Wetterdaten_abrufen.Wetter_Windbedingungen,"Schnee")>0)ODER (Textposition(MAKRO_CCU_Wetterdaten_abrufen.Wetter_Windbedingungen,"Sturm")>0 DANN
	Startprogramm("wget -q -O /dev/null 'http://192.168.0.6/xml?cmd=mode&mode=eod'")
	Selbst:="Wegen "+MAKRO_CCU_Wetterdaten_abrufen.Wetter_Windbedingungen+" ist für heute Feierabend!"
Endewenn

wenn Modus = "auto" UND (MAKRO_CCU_Wetterdaten_abrufen.W_Regenmenge >0 oder MAKRO_CCU_Wetterdaten_abrufen.W_Regenmenge1h >0) DANN
	Startprogramm("wget -q -O /dev/null 'http://192.168.0.6/xml?cmd=mode&mode=eod'")
	Selbst:="Wegen Regen: "+MAKRO_CCU_Wetterdaten_abrufen.W_Regenmenge +"/"+ MAKRO_CCU_Wetterdaten_abrufen.W_Regenmenge1h+" ist für heute Feierabend!"
Endewenn

wenn SELBST <> ALT DANN
	Starte(MAKRO_ANZEIGENSTEUERUNG)
	MAKRO_PUSHOVER.Empfaenger:="Tobias"
	MAKRO_PUSHOVER.Dringlichkeit:=-2
	MAKRO_PUSHOVER.Betreff:="eShawn"
	MAKRO_PUSHOVER.Sound := "none"
	wenn Textposition(Selbst,"Fehler") > 0 ODER Textposition(Selbst,"fehler") > 0 ODER Textposition(Selbst,"Schleife verloren") > 0 dann
		MAKRO_PUSHOVER.Empfaenger:="Tobias"
		MAKRO_PUSHOVER.Dringlichkeit:=1
		MAKRO_PUSHOVER.Betreff:="eShawn braucht HILFE"
		MAKRO_PUSHOVER.Sound := "spacealarm"
		Abspielen:="eShawn braucht Hilfe"
		MAKRO_URL_Wandeln := Abspielen
		aufrufen(MAKRO_URL_Wandeln)
		Anweisung := "wget -q -O /dev/null http://192.168.0.20:50000/tts="+MAKRO_URL_Wandeln
		StartProgramm(Anweisung)
	endewenn
	wenn Textposition(Selbst,"Feierabend") > 0 dann
		MAKRO_PUSHOVER.Empfaenger:="Tobias "
		MAKRO_PUSHOVER.Dringlichkeit:=0
		MAKRO_PUSHOVER.Betreff:="eShawn macht Feierabend"
		MAKRO_PUSHOVER.Sound := "alien"
		Abspielen := "eShawn macht Feierabend"
		MAKRO_URL_Wandeln := Abspielen
		aufrufen(MAKRO_URL_Wandeln)
		Anweisung := "wget -q -O /dev/null http://192.168.0.20:50000/tts="+MAKRO_URL_Wandeln
		StartProgramm(Anweisung)
	endewenn
	wenn Textposition(Selbst,"mäht") > 0 dann
		Abspielen := "eShawn startet jetzt den Mähvorgang. Ist der Rasen frei?"
		MAKRO_URL_Wandeln := Abspielen
		aufrufen(MAKRO_URL_Wandeln)
		Anweisung := "wget -q -O /dev/null http://192.168.0.20:50000/tts="+MAKRO_URL_Wandeln
		StartProgramm(Anweisung)
	endewenn
	MAKRO_PUSHOVER.Text:=Selbst
	AUFRUFEN(MAKRO_PUSHOVER)
	ALT:=SELBST
ENDEWENN
Makro_Aktiv := 0
Mit dem zweiten Teil kommt eine Sprachausgabe, wenn eShawn anfgängt zu mähen oder Hilfe benötigt. Auch wird über Pushover der Status mit geringer Priorität gesendet oder mit hoher, wenn es ein Problem gibt. Bei Regen oder Unwetter wird er nach Hause in den Feierabend geschickt.

Das Makro ist perfekt auf meine Bedürfnisse angepasst. Ich erhebe mit nichten einen Anspruch auf Perfektion. Es funktioniert einfach komplett ohne Abstürze und im Intervall von 2 Minuten. Gibt es Probleme, erhöht sich das Intervall automatisch auf 4 Minuten. Bei sehr lahmen CCUs ist u.U. ein noch größeres Intervall zu wählen.

Hoffe es hilft.
Gruß, Tobias.
:: Geräteversion - MSW-Software: R40Li - MSW-Version: 5.01.00 - Robonect Firmware 1.0 Beta 2

Benutzeravatar
joe1313
Forum-Nutzer
Beiträge: 13
Registriert: Mo 14. Nov 2016, 21:08
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 2.xx.xx
Herstellungsjahr: 2011
Robonect-Modul: Robonect Hx (Rev.2)
Robonect Firmware: -V1.1b

Re: Homematic - Einbindung

Beitrag von joe1313 »

Hallo,
Hat jemand ein funktionsfähiges Script, Robonect V0.9 Final unter CUxD?
+Systemvariablen ob Zeichenkette oder Werteliste

Battery, Laufzeit ,Wlan geht schon mal, aber
Status, Modus und Timer-Status wollen nicht - wird nur der erste Zustand angezeigt ( habe als Werteliste hinterlegt)
gruss joe

Edit: ES GEHT JETZT :) (Systemvariablen für Staus, Modus und Timer-Status auf Zeichenkette geändert )

HMROHAJUE
Forum-Anfänger
Beiträge: 9
Registriert: Do 16. Mär 2017, 07:48
Mäher: Husqvarna Automower 310
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.2)
Robonect Firmware: V1.0 Beta 7a

Re: Homematic - Einbindung

Beitrag von HMROHAJUE »

Hallo Joe(?),

bekomme in kommender Woche mein Modul und würde gerne meinen AM310 mit in HM auf gleicher Basis (Script, Robonect V0.9 Final unter CUxD) einbinden. Wäre prima, wenn Du mir Deine aktuell verwendete Script-Version nennen kannst. Perfekt wäre natürlich, wenn Du den von Dir verwendeten Script hier einstellen würdest.

Funktioniert bei Dir der Script in Verbindung mit Benutzername und Passwort?

Vorab vielen Dank!
Gruß
Jürgen
Gruß
Jürgen

Benutzeravatar
saugbaer
Forum-Veteran
Beiträge: 1371
Registriert: Mo 18. Apr 2016, 01:30
Wohnort: Ramelsloh
Mäher: Husqvarna Automower 310
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.5)
Robonect Firmware: V1.2 08.10.2020 17:06
hat sich bedankt: 1 Mal
wurde gedankt: 3 Male

Re: Homematic - Einbindung

Beitrag von saugbaer »

@HMROHAJUE ....bitte Signatur einpflegen...danke ;)
:mrgreen: Ich bin nicht die Signatur, ich putz hier nur :mrgreen:
AVM 7490 Fw.7.12 + 2AP's (FRITZ!Powerline 546E + FRITZ!WLAN Repeater 1160 Fw.7.12)
HX + APP + VPN + Kamera + LED

Benutzeravatar
joe1313
Forum-Nutzer
Beiträge: 13
Registriert: Mo 14. Nov 2016, 21:08
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 2.xx.xx
Herstellungsjahr: 2011
Robonect-Modul: Robonect Hx (Rev.2)
Robonect Firmware: -V1.1b

Re: Homematic - Einbindung

Beitrag von joe1313 »

Hallo Jürgen,

Code: Alles auswählen

string Url='http://192.168.178.93/json?cmd=status';

!Folgende Systemvariablen sind in Homematic anzulegen
!Fred-Status      als Zeichenkette
!Fred-Modus      als Zeichenkette
!Fred-Battery
!Fred-Laufzeit
!Fred-Timer-Status    als Zeichenkette
!Fred-Wlan
!Fred-Zeit in Status
!Fred-LastSync

var stdout="";
var posStart;
var posEnd;
var substring;
var batt;
var wlan;
string stderr;
string stdout;
string pos;
!WriteLine("strings gesetzt");
dom.GetObject("CUxD.CUX2801003:7.CMD_SETS").State("wget -q -O - '"#Url#"'");
dom.GetObject("CUxD.CUX2801003:7.CMD_QUERY_RET").State(1);
string stdout= dom.GetObject("CUxD.CUX2801003:7.CMD_RETS").State();
!WriteLine("Abrufen");
!WriteLine(stdout);

!********R40Li Status abfragen***********
!WriteLine("Status Anfang!");
posStart = '{"status": ';
posEnd = ' ,';
pos = stdout.Find(posStart) + posStart.Length();
!WriteLine("pos");
!WriteLine(pos);
substring = stdout.Substr(pos, 1).StrValueByIndex(posEnd, 0) ;   
WriteLine(substring);
dom.GetObject('Fred-Status').State(substring);

!WriteLine("Status Ende!");

!********R40Li Status abfragen ENDE***********

!********R40Li Modus abfragen***********
!WriteLine("Modus Anfang!");
posStart = '"mode": ';
posEnd = ', "batt';
pos = stdout.Find(posStart) + posStart.Length();
!WriteLine("pos");
!WriteLine(pos);
substring = stdout.Substr(pos, 10).StrValueByIndex(posEnd, 0) ;   
WriteLine(substring);
dom.GetObject('Fred-Modus').State(substring);
!WriteLine("Modus ende!");

!********R40Li Modus abfragen ENDE***********

!********R40Li Batterie abfragen***********
pos=0;
posStart = '"battery": ';
posEnd = ', "';
pos = stdout.Find(posStart) + posStart.Length();
!WriteLine("pos");
!WriteLine(pos);
substring = stdout.Substr(pos, 10).StrValueByIndex(posEnd, 0) ;
batt=substring;
substring =substring + ' %';
if(stdout.Find(posStart)>0)
{
!WriteLine("Battery");
!WriteLine(substring);
dom.GetObject('Fred-Battery').State(substring.ToString(1));
dom.GetObject("CUxD.CUX2801003:7.LOGIT").State("Fred-Battery;"#batt.ToString(1));
!WriteLine("Batterie ende!");
}
else
{
dom.GetObject('Fred-Battery').State('Variable nicht gesetzt');
}
!********R40Li Batterie abfragen ENDE***********

!********R40Li Laufzeit abfragen***********
pos=0;
posStart = '"hours": ';
posEnd = '}';
pos = stdout.Find(posStart) + posStart.Length();
if(stdout.Find(posStart)>0)
{
!WriteLine("pos");
!WriteLine(pos);
substring = stdout.Substr(pos, 10).StrValueByIndex(posEnd, 0) ;
substring =substring + ' h';
!WriteLine("Laufzeit");
!WriteLine(substring);
dom.GetObject('Fred-Laufzeit').State(substring.ToString(1));
!WriteLine("Laufzeit ende!");
}
else
{
dom.GetObject('Fred-Laufzeit').State('Variable nicht gesetzt');
}
!********R40Li Laufzeit abfragen ENDE***********

!********R40Li Status abfragen***********
pos=0;
posStart = '"timer": {"status": ';
posEnd = '}';
pos = stdout.Find(posStart) + posStart.Length();
!WriteLine("pos");
!WriteLine(pos);
substring = stdout.Substr(pos, 1).StrValueByIndex(posEnd, 0) ;
!WriteLine("Timer Status");
!WriteLine(substring);
!WriteLine(substring);
dom.GetObject('Fred-Timer-Status').State(substring);
!WriteLine("Timer Staus Ende!");

!********R40Li Status abfragen ENDE***********

!********R40Li Wlan abfragen***********
pos=0;
posStart = '"wlan": {"signal": ';
posEnd = '}';
pos = stdout.Find(posStart) + posStart.Length();
substring = stdout.Substr(pos, 3).StrValueByIndex(posEnd, 0) ;
wlan=substring;
substring =substring + ' %';
if(stdout.Find(posStart)>0)
{
!WriteLine("Battery");
!WriteLine(substring);
dom.GetObject('Fred-WLAN').State(substring.ToString(1));
dom.GetObject("CUxD.CUX2801003:7.LOGIT").State("Fred-WLAN;"#wlan.ToString(1));
!WriteLine("Batterie ende!");
}
else
{
dom.GetObject('Fred-WLAN').State('Variable nicht gesetzt');
}
!********R40Li Wlan abfragen ENDE***********


!********R40Li Mod abfragen***********
!WriteLine("Modus Anfang!");
posStart = '"duration": ';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();
!WriteLine("pos");
!WriteLine(pos);
substring = stdout.Substr(pos, 10).StrValueByIndex(posEnd, 0) ;
substring =substring + ' s';   
WriteLine(substring);
dom.GetObject('Fred-Zeit in Status').State(substring);
!WriteLine("Modus ende!");

!********R40Li Mo abfragen ENDE***********

!********R40Li LastSyncTime schreiben***********
dom.GetObject('Fred-LastSync').State(system.Date("%d.%m.%Y %H:%M:%S"));
!********R40Li LastSyncTime schreiben***********

Aber ohne Benutzer und Passwort.

gruss joe

regalboot
Forum-Nutzer
Beiträge: 37
Registriert: So 24. Jul 2016, 08:46

Re: Homematic - Einbindung

Beitrag von regalboot »

Moin moin
Hat jemand einen String womit ich das Camera Bild auslesen kann via Homematic?

HMROHAJUE
Forum-Anfänger
Beiträge: 9
Registriert: Do 16. Mär 2017, 07:48
Mäher: Husqvarna Automower 310
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.2)
Robonect Firmware: V1.0 Beta 7a

Re: Homematic - Einbindung

Beitrag von HMROHAJUE »

Hallo Joe,

vielen Dank für Deine rasche Reaktion und Deinen eingestellten Script. Sobald das Modul eintrifft und es die Zeit erlaubt, werde ich mich ans Werk machen.

Perfekt wäre, wenn sich die Anbindung dann auch noch ohne allzu große Komplikationen realisieren lassen würde. Werde berichten.

Gruß
Jürgen
Gruß
Jürgen

Benutzeravatar
Sprite01
Forum-Nutzer
Beiträge: 30
Registriert: Do 17. Mär 2016, 14:09
Wohnort: Sachsen-Anhalt
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2015
Robonect-Modul: Robonect H30x (Rev.2)
Robonect Firmware: 1.0
Kontaktdaten:

Re: Homematic - Einbindung

Beitrag von Sprite01 »

HMROHAJUE hat geschrieben:Funktioniert bei Dir der Script in Verbindung mit Benutzername und Passwort?
Würde mich ja auch mal interessieren.
Habe im Moment auch noch ohne User/Passwort am laufen nachdem mir sonst immer die CCU abgeschmiert ist.
--------
Gruß
Dirk

Gardena R40Li; MSW: 5.01.00 (10-10-2014); SUB: 5.00.00; MMI: 5.05.00

HMROHAJUE
Forum-Anfänger
Beiträge: 9
Registriert: Do 16. Mär 2017, 07:48
Mäher: Husqvarna Automower 310
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.2)
Robonect Firmware: V1.0 Beta 7a

Re: Homematic - Einbindung

Beitrag von HMROHAJUE »

Guten Abend,

angestrebt ist die Umsetzung mit BN+PW. Bin selber gespannt, ob sich die Vorstellung realisieren lässt oder ob ich mit den gleichen Problemen zu kämpfen habe.

Gruß
Jürgen
Gruß
Jürgen

Antworten

Zurück zu „Homematic-Nutzer“