[Modul] Zigbee2MQTT

Hi,
das scheint normal zu sein. Er hat anscheinend keinen Timer drin der nach X Sekunden den Wert wieder auf neutral setzt. Ich reagiere seit Jahren auf Aktualisierung und das klappt beim Briefkasten hervorragend bisher. ToiToiToi.

Ralf

Moin @Burki24,

vielen Dank.

Hein09

Hallo Zusammen,
irgendwann kam ja in alles z2m Geräten in Symcon die Update Variable.
Wofür ist die? Soll die Anzeigen wenn es ein Update gibt oder wenn ein Update durchgeführt wird.
Ich mache gerade paar Updates von HUE´s und anderen Geräten. In Home Assistant zeigt er jeweils an das es ein Update gibt und gesondert wenn eins durchgeführt wird.
In Symcon passiert indes nichts mit der Update Variable.
Feature oder Bug?
Beta Modul ist aktuell
Extension ist auch auf dem Stand von GitHub bzw. immer noch die ohne ein Versions Kommentar wie von Kai angekündigt
z2m ist auf 1.39

VG
BlackOrca

Ah, Danke! Hab eben getestet, dass ich den Wert nach z.B 5 Sekunden wieder auf OK setze und scheint zu funken.

Der Motionsensor scheint doch zu funktionieren, braucht wohl nur bisschen länger… Sorry

Der Vibrationssensor scheint auch zu funktionieren. Danke!

Moin SchwarzerWal,
das liegt am Modul. Folgendes steht (nicht) in der Zigbee2MQTTHelper.php vom Modul:

if (array_key_exists('update', $Payload)) {
    //$this->LogMessage(json_encode($Payload), KL_WARNING);
		//Bleibt hier. gibt es nicht als Expose
	$this->RegisterVariableInteger('Z2M_FWinstalled', $this->Translate('installierte Firmware'), '');
	$this->RegisterVariableInteger('Z2M_FWlatest', $this->Translate('aktuelle Firmware'), '');
	$this->RegisterVariableString('Z2M_UpdateStatus', $this->Translate('Update Status'), '');
    if (isset($Payload['update']["installed_version"])) $this->SetValue('Z2M_FWinstalled', $Payload['update']["installed_version"]);
    if (isset($Payload['update']["latest_version"])) $this->SetValue('Z2M_FWlatest', $Payload['update']["latest_version"]);
    if (isset($Payload['update']["progress"])){
    	$this->SetValue('Z2M_UpdateStatus', $Payload['update']["state"] . " " . $Payload['update']["progress"] . "%");
    }
    else $this->SetValue('Z2M_UpdateStatus', $Payload['update']["state"]);
}
if (array_key_exists('update_available', $Payload)) {
    //Bleibt hier. gibt es nicht als Expose
    $this->RegisterVariableBoolean('Z2M_Update', $this->Translate('Update'), '');
    $this->SetValue('Z2M_Update', $Payload['update_available']);
}

‚update_available‘ steht im Modul und liefert nur einen Status wenn Du Z2M aktiv fragst ob ein Update da ist.

‚update‘ habe ich bei mir hinzugefügt und das macht Folgendes:
Trägt installierte und neuest Firmwareversion in eine Variable ein
Wenn Z2M liefert das ein Update vorhanden ist wird es eingetragen
Wenn ein Update läuft wird der Fortschritt angezeigt

Letztes Jahr hatte ich das schon gepostet zusammen mit einem Script mit dem IPS automatisch updated wenn ein Update vorhanden ist. Vorsicht nicht alle Geräte spielen da mit. Meine Tadfri Schalter habe ich schon ein paar Mal updaten lassen aber obwohl OK geliefert wurde hatten sie nach einiger Zeit wieder die alte Firmware. Es könnte daran liegen das ich bei Ikea eine Zeit lang den alternativen Updateserver aktiv hatte.

Siehe: AutoUpdate für Zigbee2MQTT

Ralf

Genau aus diesem Grund haben wir das erstmal nicht eingepflegt.

LG
Burkhard

Moin Burkhard,
die Änderungen an der Lib selbst machen ja nix weiter als ein Update bzw. den Fortschritt anzuzeigen. Wird Update angezeigt musst man ja anderweitig reagieren z.B. in der GUI von Z2M. Im Moment bekommt man ja nicht wirklich mit wenn es ein Update gibt.

Mein Script ist ein anderer Fall. Was übrigens am Wochenende bei einer Ledvance wieder prächtig funktioniert hat :grinning: Bisher machen wirklich nur die Tadfri Schalter nicht das was sie sollen die habe ich jetzt in einer Ignorierliste.

Ralf

Danke für die Antworten @HarmonyFan und @Burki24
Ich sehe es wie HarmonyFan, wenn die Info zur Verfügung steht wäre es gut diese in Symcon zu haben. Ich benötige nicht mal den Fortschritt. Nur ein Hinweis das es eine Update gibt. Wenn die Info nicht kommt also im Payload gar nicht existiert dann die Variable auch nicht anlegen.

Gruß
Dennis

Moin Stephan,

habe gestern das Gerät bekommen und gleich angefangen. Die ersten Ergebnisse sehen gut aus:

Denke mal, ich schicke den PR morgen zu @KaiS . Die Implementierung war ein wenig aufwendiger, da die numeric-Variablen, die Z2M an das Modul sendet eigentlich String-Werte enthalten.

Muss nur noch die Bewässerungsdauer richtig umrechnen.

Nachtrag 11.07.:

Werde es heute als PR an @KaiS senden:
image

LG
Burkhard

Abend,

Hätte hier einen Rauchmelder, in Z2M zeigt er mir noch " Smoke concentration " an, was er mir in Symcon nicht anzeigt, lieg ich hier richtig, dass die Expose fehlt? Oder taucht das erst auf, wenn mal Rauch da war? :smiley:

dump(4).txt (13,2 KB)

VG

Moin @grumpybear ,

das Expose fehlt noch im Modul, danke für den Dump. Pflege ich nach.

LG

Burkhard

1 „Gefällt mir“

Hallo Burkhard,

vielen Dank für dein Rückmeldung und deinen Einsatz.

Viele Grüße und ein schönes Wochenende
Stephan

Die PRs von @Burki24 sind online.

Grüße,
Kai

1 „Gefällt mir“

Moin @KaiS

Habe noch einen weiteren PR gesendet, da sich bei der Implementierung des Wasserventils noch ein paar kleinere Fehler eingeschlichen hatten:

Da Symcon keine Möglichkeit gibt in numerischen Variablen Zeichenfolgen (‚hh‘:‚mm‘:‚ss‘) zu senden, aber im Payload der Device ein numerischer Wert in diesem Format gesendet wird, werden die betreffenden Variablen als Ausnahme unter numeric geführt aber als String angelegt und befüllt.

Das Profil ‚~UnixTimestamp‘ kann hier nicht genutzt werden, da im Payload nur die Zeit als ‚hh‘:‚mm‘':‚ss‘ gesendet wird, ohne Datumsinhalt. Der Versuch, das entsprechende Datum hinzuzufügen scheitert, da es dann mit jedem Payload auf das aktuelle Datum gesetzt wird und somit die Zeitangaben Ende, Start und Dauer nicht mehr der Realität entsprechen.

image

Das Payload dazu sieht folgendermaßen aus:

{
  "battery": 90,
  "battery": 100,
  "cycle_irrigation_interval": 1531,
  "cycle_irrigation_num_times": 0,
  "irrigation_end_time": "08:06:26",
  "irrigation_start_time": "08:06:16",
  "irrigation_target": 185,
  "last_irrigation_duration": "00:00:10",
  "last_seen": 1720850784276,
  "linkquality": 152,
  "last_seen": 1720850800078,
  "linkquality": 188,
  "mode": "capacity",
  "state": "OFF",
  "water_consumed": 0
}

Kleine Ergänzung: Die numeric-Deklaration kommt aus der Tuya-FW direkt und kann in zigbee2MQTT nicht in string gewandelt werden. Von daher bleibt uns erstmal nur die Wandlung in Symcon.

@firewire
Bitte den letzten PR abwarten, da gibt es nochmal ein paar Änderungen.

@grumpybear
Dein Rauchmelder wird mit dem PR dann auch gleich gefixed.

LG
Burkhard

1 „Gefällt mir“

Moin @KaiS

Vielen Dank.

Hein09

Guten Morgen,

Keine Eile :slight_smile:

Danke und angenehmes Wochenende:-)

VG

1 „Gefällt mir“

Moin @Burki24

ich habe jetzt die Sachen getestet, hier die Ergebnisse:

Der „Ladung Schutz“ funktioniert noch nicht

lässt sich in IPS schalten, aber im Zigbee2MQTT ändert sich nichts.
Schaltet man in Zigbee2MQTT, ändert sich der Status in IPS.

Die „LED-Anzeige“ funktioniert einwandfrei.

Das „Schalter verriegeln“ funktioniert nicht

lässt sich in IPS schalten, aber im Zigbee2MQTT ändert sich nichts.
Schaltet man in Zigbee2MQTT, ändert sich der Status in IPS.

Der Funktion „Überspannungsschutz“ funktioniert noch nicht.

Der Wert lässt sich in IPS nicht ändern.
Ändert man den Wert in Zigbee2MQTT, ändert sich der Wert auch in IPS.

Die Funktion „Ladung Begrenzung“ funktioniert noch nicht.
Der Wert lässt sich in IPS ändern, aber im Zigbee2MQTT ändert sich nichts…
Ändert man den Wert in Zigbee2MQTT, ändert sich der Wert auch in IPS.

Der Schalter „Einschaltverhalten nach Stromausfall“ funktioniert auch nicht.
(Bin aber der Meinung das es vorher funktionierte)
lässt sich in IPS schalten, aber im Zigbee2MQTT ändert sich nichts.
Schaltet man in Zigbee2MQTT, ändert sich der Status in IPS.

Hein09

Hast Du das Gerät mal in Symcon gelöscht und neu eingerichtet?

LG
Burkhard

Moin,

nein hatte ich nicht, jetzt nachdem dem löschen und neu einrichten.
Habe ich mein Beitrag angepasst.

Hein09