Hallo Zusammmen,
ich habe mir einen Hue Bewegungsmelder zugelegt, den ich problemlos mit der Hue Bridge verbinden konnte.
Leider finde ich ihn nicht, so wie die anderen Lampen, in der CCU.
Muss ich den Bewegungsmelder irgendwie manuel in die CCU einbinden?
Die Lampen waren sichtbar, sobald ich sie in der Hue Bridge angemeldet hatte.
Vielen Dank
Hue Bewegungsmelder in der CCU nicht zu finden
Moderator: Co-Administratoren
- Rosagallica
- Beiträge: 83
- Registriert: 22.07.2018, 15:54
- System: CCU
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 6 Mal
Re: Hue Bewegungsmelder in der CCU nicht zu finden
Sowohl das eq3- als auch das Plugin von jan unterstützen nur die Leuchtmittel von der Bridge.
Man kann natürlich über die Hue-API den Zustand des Hue-Bewegungsmelders auslesen und in ein CUxD-Bewegungsmeldergerät übertragen. Geht aber nur zeitgesteuert (z.B. über CCU-Programme) und nicht ereignisbasiert wie Homematic-nativ oder innerhalb von Hue.
Das gleiche ist analog auch für den Temperatursensor (JSON-Attribut: temperature) und für den Helligkeitssensor (Attribut: lightlevel) möglich, die im Hue-Bewegungsmelder mit verbaut sind und eine andere Sensor-Id haben.
Man kann natürlich über die Hue-API den Zustand des Hue-Bewegungsmelders auslesen und in ein CUxD-Bewegungsmeldergerät übertragen. Geht aber nur zeitgesteuert (z.B. über CCU-Programme) und nicht ereignisbasiert wie Homematic-nativ oder innerhalb von Hue.
Code: Alles auswählen
! Bewegung Hue-Bewegungsmelder in Cuxd-Device übertragen.
! (90) Universal Wrapper Device, Funktion State, Geräte-Icon: Innen-Bewegungsmelder;; USE_HMDATAPT abwählen
string cuxdDevice = "CUxD.CUX9001001";
string lastUpdatedSysVarName = "CUX9001001:1-LastUpdated";
! j-a-n-Hue-Addon
string bridgeId = "00123456789abcde";
string presenceSensor = "11";
string hueScript = "/usr/local/addons/hue/hue.tcl";
string cmd = "request GET sensors/";
string stdout;
string stderr;
string cmdLine = hueScript # " " # bridgeId # " " # cmd # presenceSensor;
system.Exec(cmdLine, &stdout, &stderr);
WriteLine(">"#stdout#"<");
WriteLine(">"#stderr#"<");
boolean reachable = stdout.Contains('"reachable":true');
if (reachable) {
string fieldPresence = '"presence":';
string valuePresence;
integer i = stdout.Find(fieldPresence);
if (i>0) {
! Presence-Wert auslesen
string valuePresence = stdout.Substr(i).StrValueByIndex(",", 0).StrValueByIndex(":",1);
if (valuePresence && valuePresence!= "null") {
integer presence = (valuePresence == "true").ToInteger();
WriteLine("Bewegung erkannt: " # presence);
! Letzte Aenderung-Wert auslesen
string fieldLastUpdated = '"lastupdated":"';
string valueLastUpdated = "";
integer i = stdout.Find(fieldLastUpdated);
if (i>0) {
string valueLastUpdated = stdout.Substr(i).StrValueByIndex(',', 0).StrValueByIndex('":"',1).Substr(2);
valueLastUpdated = valueLastUpdated.Substr(0, valueLastUpdated.Find("\""));
WriteLine("Last Update: >" # valueLastUpdated #"<");
if ((valueLastUpdated.Length() == 19) && valueLastUpdated.Contains("T")) {
! UTC in lokale CE(S)T-Zeit umwandeln
time utcTime = valueLastUpdated.Replace("T", " ").ToTime();
if (utcTime.IsDST()==1) {
valueLastUpdated = (utcTime+7200).Format("%F %T");
} else {
valueLastUpdated = (utcTime+3600).Format("%F %T");
}
}
}
var dp = dom.GetObject(ID_DATAPOINTS).Get(cuxdDevice # ":1.SET_STATE");
var sysvar = dom.GetObject(ID_SYSTEM_VARIABLES).Get(lastUpdatedSysVarName);
if (!sysvar) {
WriteLine("Keine Systemvariable '" # lastUpdatedSysVarName # "' angelegt.");
}
if (dp) {
string oldLastUpdated = sysvar.Value();
if (valueLastUpdated <> oldLastUpdated) {
dp.State(presence);
sysvar.State(valueLastUpdated);
} else {
WriteLine("Kein neuer Status.");
}
} else { WriteLine("kein DP"); }
} else {
! Wert "null": Bewegungsmelder ist deaktiviert, sendet dann keine Daten
WriteLine("Bewegung: " # "n/a");
}
}
} else {
WriteLine("Hue sensor nicht erreichbar.");
}