Hi,
der Hinweis auf Z2M_Command war nur gedacht falls es dringend ist.
KaiS wird bestimmt unterschreiben das ich einer bin der alles machbare auch machen bzw. gemacht haben will:-)
Apropos machbar: Der Hue Bewegungsmelder hat Variablen occupancy_timeout und motion_sensitivity die auch beschreibbar sind.
mit
Hue MotionSensitivity, OccupationTimeout
RequestAction
case 'Z2M_MotionSensitivity':
$this->setMotionSensitivity($Value);
break;
case 'Z2M_OccupancyTimeout':
$this->setOccupancyTimeout($Value);
break;
ReceiveData
if (property_exists($Payload, 'occupancy_timeout')) {
$this->RegisterVariableInteger('Z2M_OccupancyTimeout', $this->Translate('Occupancy Timeout'), '');
$this->EnableAction('Z2M_OccupancyTimeout');
SetValue($this->GetIDForIdent('Z2M_OccupancyTimeout'), $Payload->occupancy_timeout);
}
if (property_exists($Payload, 'motion_sensitivity')) {
$this->RegisterVariableInteger('Z2M_MotionSensitivity', $this->Translate('Motion Sensitivity'), 'Z2M.Sensitivity');
$this->EnableAction('Z2M_MotionSensitivity');
switch ($Payload->motion_sensitivity) {
case 'medium':
SetValue($this->GetIDForIdent('Z2M_MotionSensitivity'), 1);
break;
case 'low':
SetValue($this->GetIDForIdent('Z2M_MotionSensitivity'), 2);
break;
case 'high':
SetValue($this->GetIDForIdent('Z2M_MotionSensitivity'), 3);
break;
default:
$this->SendDebug('SetValue MotionSensitivity', 'Invalid Value: ' . $Payload->motion_sensitivity, 0);
break;
}
}
Action Routinen
privat function setOccupancyTimeout(int $value)
{
$Payload['occupancy_timeout'] = $value;
$PayloadJSON = json_encode($Payload, JSON_UNESCAPED_SLASHES);
$this->Z2MSet($PayloadJSON);
}
privat function setMotionSensitivity(int $value)
{
switch ($value) {
case 1:
$Payload['motion_sensitivity'] = 'medium';
break;
case 2:
$Payload['motion_sensitivity'] = 'low';
break;
case 3:
$Payload['motion_sensitivity'] = 'high';
break;
default:
return;
}
$PayloadJSON = json_encode($Payload, JSON_UNESCAPED_SLASHES);
$this->Z2MSet($PayloadJSON);
}
kann man sie auch bedienen.
btw. KaiS hast Du mal einen Thread wo steht das in Zukunft alles nur nur per RequestAction laufen soll? Wenn ja dann sind diese Variablen ein Beispiel das es suboptimal ist. Diese Variablen liefert der Bewegungsmelder erst wenn man sie einmal verändert hat.
Danke für den Code.
Man kann im Konfigurator, allerdings die Variablen abrufen.
Ich werde trotzdem dabei bleiben, dass die Funktionen auf private gesetzt werden.
Ein Thread habe ich gerade nicht, aber soweit ich weiß, wird vermehrt auf RequestAction gesetzt, oder @paresy?
Moin Kai,
der Code beruht ja größtenteils auf Egoismus und ich bin kein geduldiger Mensch der warten kann:-)
btw. Mail von Samstag bekommen? Der Rollo-Antrieb hat bei Position ohne Änderung funktioniert. Bei Status habe ich Änderungen vorgenommen. Da ich dann rumspielen wollte habe ich dir die gesamte PHP-Datei geschickt in der Hoffnung das Du damit was anfangen kannst.
Mal sehen was Paresy sagt. Ich habe aber noch mehr Argumente:-)
Es gibt eine neue Version als Stable Version.
Alle weitere dazu ist im zweiten Post zu finden, leider kann ich nicht mehr genau sagen, welche Variablen es nun alle neu gibt.
Es gibt auch eine neue Beta Version, dort gibt es folgende neue Variablen:
Max Temperatur
Min Temperatur
Default (Preset)
Boost Zeit
Urlaubsmodus
Urlaubsmodus default (preset) Tage
Komfort Temperatur
Eco Temperatur
Bewegungsempfindlichkeit (gab es vorher schon, aber ohne Aktion)
ich nutze das Modul recht intensiv und habe das Update vor kurzem durchgeführt.
Zeitgleich allerdings auch meinen Zigbee2MQTT Docker Container aktualisiert.
Jetzt habe ich den Effekt, dass die Batterie Zustände in neuen Variablen sind (links waren alle ungültig) und ich habe nun 2 Variablen bei den Bewegungsmeldern für die Helligkeit.
Ist das durch die Änderung im Modul? Gab es noch weitere Änderungen? Sonst müsste ich nochmal alle Trigger prüfen, ob z.B. Bewegung erkannt noch funktioniert.
Ich weiß nicht wieso du neue Variablen bekommen hast, eigentlich habe ich da nichts geändert.
Kannst du mal schauen wie die Idents von den alten und den neuen Variablen heißen?
Die Helligkeitsvariablen gibt es neu, da Zigbee2MQTT diese so schickt.
Es gab noch einige Änderungen, aber eigentlich habe ich nur weitere Geräte hinzugefügt, also neue Variablen.
Ansonsten ist ein Konfigurator dazu gekommen, es gibt eine Geräte- und eine Gruppeninstanz.
An der Geräteinstanz hat sich nichts weiter geändert außer der Name und der interne Ablauf.
Sollte dir dennoch etwas auffallen, dann melde dich bitte.
Batterie hat eine neue Variablen ID erhalten.
Beleuchtungsstärke (Lux) - da gab es aus meiner Sicht eine Veränderung.
Warum der Bewegungsmelder eine Temperatur hat ist mir auch gerade unklar. Ich werde wohl mal den Zigbee2MQTT Docker Container untersuchen müssen…
Wie gesagt, Zigbee2MQTT liefert beide Beleuchtungsstärken Variablen, deswegen werden sie angelegt.
Gab es also zwei Batterie Variablen und du hast schon eine gelöscht? Da hätte mich dann nämlich interessiert wie die beiden Idents (Nicht IDs) aussehen.
Manche Bewegungsmelder liefern Temperaturen, zum Beispiel die von Philips HUE und dann werden die Variable auch angelegt.
Die alten IDs habe ich leider nicht mehr.
Ich habe von jedem Batterie-Status eine Verlinkung. Sämtliche Verlinkungen führten zu einem ungültigen Ziel (VarID nicht mehr vorhanden).
Es scheint als wurden die Variablen daher vollständig ersetzt (gelöscht + neu angelegt)
Habe die neue lib 3.1 jetzt eingebunden.
Allerdings sind jetzt die Funktionen alle Private.
Wie setzte ich jetzt, als Beispiel den „State“ bei einem Plug über „RequestAction“ Funktion?
Ich hab nur den Ident ‚Z2M_State‘ und den Value in RequestAction.
Aber wie kommt die Id des Zigbee Plugs ins Bild?
Danke.
BYE
Thomas
Hi,
die Aqara Bewegungsmelder liefern auch Temperatur.
Mir sind keine doppelten Batterie-Idents aufgefallen. Ich habe eben noch mal ein paar Geräte angeschaut und da gibt es keine doppelten IDs und eine Routine zum Löschen von Variablen habe ich im Modul nicht gesehen. Batteriestatus überprüft bei mir der Batteriemonitor bzw. ich lege eine Tabelle an wo ich nach allen Batterieeinträgen suche und keine festen IDs benutze.