Die beiden Buttons sind angekommen und haben erstaunlicherweise sofort funktioniert. Alles tipitopi.
Allerdings ist mir aufgefallen, dass die Buttons oder das Modul bei einem kurzen Drücken, davor einen vermeintlichen langen Tastendruck liefern. Was aber nicht richtig ist. Im Debug sehe ich, dass vor einem kurzen Druck ein Paylod mit 254 hereinkommt.
04.11.2025, 15:49:45 | JSON->Payload | {"src":"shellyplusplugs-fcb46726c494","dst":"shellyplusplugs-fcb46726c494/events","method":"NotifyEvent","params":{"ts":1762267790.11,"events":[{"component":"script:1","id":1,"event":"shelly-blu","data":{"encryption":false,"BTHome_version":2,"pid":150,"battery":100,"button":[254,0,0,0],"rssi":-87,"address":"94:b2:16:1d:96:ab"},"ts":1762267790.11}]}}
Das wird als “Lang” angezeigt, aber nur deswegen, weil 4 der höchste Wert im Profil ist. Der lange Tastendruck hat den Wert 4.
04.11.2025, 15:53:47 | JSON->Payload | {"src":"shellyplusplugs-fcb46726c494","dst":"shellyplusplugs-fcb46726c494/events","method":"NotifyEvent","params":{"ts":1762268033.01,"events":[{"component":"script:1","id":1,"event":"shelly-blu","data":{"encryption":false,"BTHome_version":2,"pid":165,"battery":100,"button":[4,0,0,0],"rssi":-81,"address":"94:b2:16:1d:96:ab"},"ts":1762268033.01}]}}
Dieser Wert 254 kommt immer, zu Beginn des drückens. Könntest du das ändern, dass 254 nicht an IPS übermittelt wird?
Ich habe mir jetzt mal so geholfen, dass ich in der module.php im Verzeichnis modules\ShellyBLU\ShellyBLURCButton4 nur Zustände kleiner gleich 4 nach IPS übermittle. Damit wird zumindest gewährleistet, dass korrekt auf Aktualisiert abgefragt werden kann.
if (property_exists($Payload->params->events[0]->data, 'button')) {
if ($Payload->params->events[0]->data->button[0]<=4) $this->SetValue('Shelly_Button', $Payload->params->events[0]->data->button[0]);
if ($Payload->params->events[0]->data->button[1]<=4)$this->SetValue('Shelly_Button1', $Payload->params->events[0]->data->button[1]);
if ($Payload->params->events[0]->data->button[2]<=4)$this->SetValue('Shelly_Button2', $Payload->params->events[0]->data->button[2]);
if ($Payload->params->events[0]->data->button[3]<=4)$this->SetValue('Shelly_Button3', $Payload->params->events[0]->data->button[3]);
}
Ist in der Zeile 50.