AlCalzone / ioBroker.zwave2

Z-Wave for ioBroker. Better. Faster. Stronger.
MIT License
23 stars 13 forks source link

Manuelles schalten wird nicht übertragen - Philio PAN06 #852

Closed skyx3 closed 2 years ago

skyx3 commented 2 years ago

Versionen:

Was ist das Problem?
Beim drücken des manuelle Schalters geht das Licht an und aus, der veränderte Status wird aber nicht im Controller am richtigen Endpunkt angezeigt. Schalte ich es via Zwave Adapter funktioniert es. Wenn ich den Schalter bediene, sollte entweder currentValue_001 oder currentValue_002 auf True springen, machen sie allerdings nicht. Stattdessen springt currentValue (Endpunkt 0?) kurz auf true, das allerdings für beide Endpunkte, so das diese Wert nicht verwendet werden kann.

grafik

Eventuell liegt es daran das unter Verknüpfungen die Endpunkte keiner Gruppe zugeordnet werden können und daher nicht korrekt übertragen werden?: grafik

Welches Gerät ist betroffen?

Logfile eines Interviews: zwavejs_2022-03-18.log

09:37 - Interview 09:40 - Endpunkt 1 - via Zwave Adapter an und ausgeschaltet -> Funktioniert, wird auch korrekt angezeigt 09:41 - Endpunkt 1 - Am Wandschalter an+ausgeschaltet -> Wird nicht übertragen

AlCalzone commented 2 years ago

Steht der Konfig-Parameter "Send Reports From Endpoints" auf Enable? Falls nicht, bitte anpassen.

Hier schreibt ein anderer User, dass er die Verknüpfungen löschen und dann wieder genau so hinzufügen musste, damit es geht: https://github.com/zwave-js/node-zwave-js/issues/4078#issuecomment-1013294044

skyx3 commented 2 years ago

Ja steht er, ändert leider nichts am Verhalten. grafik

AlCalzone commented 2 years ago

Hmm, im Log siehts für mich allerdings so aus, dass es nicht auf die Abfrage des Parameters geantwortet hat. Bin mir daher nicht sicher, ob das wirklich aktiv ist. Zumal die Reports definitiv nicht vom Endpoint kommen. Testweise mal auf Disable, abschicken, Enable, nochmal abschicken.

Meines Wissens gibt es für das Gerät eine Firmware v1.8 - finde aber keine Links. Ggf. mal beim Hersteller nachfragen, ob er dir die schicken kann?

skyx3 commented 2 years ago

Hatte ich auch schon versucht, ich schreibe mal den Hersteller an wegen der Firmware. Allerdings hatte das Relay in der alten Welt funktioniert (Zipato), also irgendwie sollte die aktuelle Firmware das schon auch drauf haben :-) Hab mal in die alten Einstellungen geschaut, aber so wirklich anders sehen die Verknüpfungen da auch nicht aus. grafik

AlCalzone commented 2 years ago

Es besteht die Möglichkeit dass die alte Software gepollt hat. Das wäre auch noch ein möglicher workaround, per Skript bei Änderungen des current Value die werte der endpoints abzufragen.

skyx3 commented 2 years ago

OK also es ist so wie Du Anfangs vermutet hast, der Parameter "Send Reports From Endpoints" wird nicht gesetzt. Ich habe noch ein weiteres PAN06, allerdings mit einer älteren Firmware, der 1.13, wenn ich hier den Parameter aktiviere funktioniert es wie gewünscht und wenn ich ihn deaktiviere zeigt es genau das negative Verhalten von den anderen PAN06 mit Firmware 1.6. Ach menno, das es an der Firmware liegt ist natürlich immer die blödeste Variante :-)

AlCalzone commented 2 years ago

1.13 ist neuer als 1.6, da 13 > 6 :) Aber gut zu wissen, dass der auf 1.6 nicht existiert, dann kam der bestimmt erst wie die anderen Parameter mit 1.8 dazu.

skyx3 commented 2 years ago

Der Hersteller stellt sich leider tod, kann man nichts machen.

AlCalzone commented 2 years ago

Dann wohl doch selbst pollen.

skyx3 commented 2 years ago

Das geht? Wie geht das? :-)

AlCalzone commented 2 years ago

Sag mir mal die genaue ID von den states die es betrifft.

skyx3 commented 2 years ago

@AlCalzone Das wäre

zwave.0 node 13

zwave.1 node 32

zwave.2 node 42

AlCalzone commented 2 years ago

Ich meinte die State-IDs, aber gut... Probier mal folgendes Skript:

const pollSetup = [
  {
    instance: 0,
    nodeId: 13,
    endpoints: [1, 2, 3],
    commandClass: "Binary Switch",
  },
  {
    instance: 1,
    nodeId: 32,
    endpoints: [1, 2, 3],
    commandClass: "Binary Switch",
  },
  {
    instance: 1,
    nodeId: 47,
    endpoints: [1, 2, 3],
    commandClass: "Binary Switch",
  },
  {
    instance: 2,
    nodeId: 42,
    endpoints: [1, 2, 3],
    commandClass: "Binary Switch",
  },
];

for (const { instance, nodeId, endpoints, commandClass } of pollSetup) {
  const nodeNr = nodeId.toString().padStart(3, "0");

  // Wenn der Sammel-State sich ändert, die einzelnen Channel abfragen
  on(`zwave2.${instance}.Node_${nodeNr}.Binary_Switch.currentValue`, (obj) => {
    // Ignore updates from the cache
    if (obj.state.q !== 0) return;

    // Alle angegebenen Endpunkte abfragen
    for (const endpoint of endpoints) {
      sendTo(`zwave2.${instance}`, "sendCommand", {
        nodeId,
        endpoint,
        commandClass,
        command: "get",
      });
    }
  });
}
skyx3 commented 2 years ago

Sorry für die späte Rückmeldung, war beruflich auf Reisen, also habe es jetzt mal probiert und bekomme den Fehler

grafik

Bei der Gelegenheit, hier die hoffentlich richtigen IDs

zwave.0 node 13 zwave2.0.Node_013.Binary_Switch.currentValue_001 zwave2.0.Node_013.Binary_Switch.currentValue_002

zwave.1 node 32 zwave2.1.Node_032.Binary_Switch.currentValue_001 zwave2.1.Node_032.Binary_Switch.currentValue_002

zwave.2 node 42 zwave2.2.Node_042.Binary_Switch.currentValue_001 zwave2.2.Node_042.Binary_Switch.currentValue_002

skyx3 commented 2 years ago

Ich hatte noch ein Gerät vergessen:

zwave.1 node 32 zwave2.1.Node_047.Binary_Switch.currentValue_001 zwave2.1.Node_047.Binary_Switch.currentValue_002

skyx3 commented 2 years ago

Ich bekomme das Skript leider nicht zum laufen. Falls Du den "Fehler" findest, würde ich mich freuen.

AlCalzone commented 2 years ago

@skyx3 Skript angepasst. Ich hatte in den Definitionen in pollSetup 2x node statt nodeId geschrieben. Node 47 ist jetzt auch drin.

skyx3 commented 2 years ago

Danke, funktioniert super.