Danke, jetzt ist es auf dieser Ebene in Ordnung.
Mein Problem ist, dass meine HEIMAN-Sirene nur zwei Zustände hat: „batterie“ und „linkquality“
Ich habe keine Zustände „on“ und „off“!?
Und was gibt es im Reiter „Exposé“?
Es gibt ein Problem, du hast zuerst die Textfunktion und dann die Sirene Ein/Aus-Funktion erstellt. Aber es muss andersherum sein, sonst hast du den Schalter im Dashboard nicht, um die Sirene ein- oder auszuschalten. Und du deaktivierst « Ist es ein Sensor? » im Textbereich, aber das muss im Bereich « Sirene Ein/Aus » gemacht werden.
Sobald das erledigt ist, gib mir die Werte der 3 Topics, dann zeige ich dir den Code, den du in den Funktionsknoten ändern musst, falls du es nicht schaffst.
Im Knoten
![]()
Ersetze den Code durch diesen, indem du den Code-Namen NOMSIRENE durch den von dir genannten Zigbee2Mqtt änderst
var inputTopic = msg.topic;
var inputPayload = msg.payload;
// Logik zum Ändern des Topics und der Nutzlast in Abhängigkeit sowohl vom Eingabetopic als auch von der Eingabenutzlast
if (inputTopic === "gladys/device/mqtt:Sirène_1/feature/mqtt:sirène_1/state" && inputPayload === "0") {
// Anpassung des Topics und der Nutzlast von Gladys an zigbee2mqtt
msg.topic = "zigbee2mqtt/NOMSIRENE/set/warning/mode"; msg.payload = "stop";
}
if (inputTopic === "gladys/device/mqtt:Sirène_1/feature/mqtt:sirène_1/state" && inputPayload === "1") {
// Anpassung des Topics und der Nutzlast von Gladys an zigbee2mqtt
msg.topic = "zigbee2mqtt/NOMSIRENE/set/warning/mode"; msg.payload = "emergency";
}
return msg;
und sag mir, ob es funktioniert
Nein, du kannst deine Funktionen in der Reihenfolge erstellen, die du möchtest.
@_Will_71
Ich habe mich falsch ausgedrückt (das passiert mir manchmal
), aber er kann die Funktionen tatsächlich in der Reihenfolge erstellen, die er möchte. Aber @Isage hat hier nicht die richtigen Parameter gesetzt.
« Sirene Ein/Aus » ist ein Toggle
![]()
er kann es ein- und ausschalten, aber er wird keinen Status zurückbekommen, wenn die Sirene z. B. durch eine Fernbedienung oder eine Szene in Gladys ein- oder ausgeschaltet wird.
Die richtigen Parameter für den Sirenenteil sollten sein
So könnte es trotzdem funktionieren, man muss nur den richtigen Code im « Funktion »-Node anpassen.
Allerdings kann die Funktion « Text » verwendet werden, um « Battery » anzuzeigen, das die Sirene veröffentlicht
In meinem Fall, wenn ich http://IP deines Gladys:8080/#/ aufrufe,
habe ich das für meine NOUS-5-Steckdose
![]()
Wenn ich auf NOUS-5 klicke
Kannst du dasselbe für deine Sirene tun? Das würde die Hilfe erleichtern.
Okay, jetzt verstehe ich ![]()
hier sind die Themen
gladys/master/device/mqtt:sirene_1/feature/mqtt:sirene_1/state
gladys/master/device/mqtt:sirene_1/feature/mqtt:sirene_1_power/text
gladys/device/mqtt:sirene_1/feature/mqtt:sirene_1_power/state
Im Node
![]()
versuche, den Code durch diesen zu ersetzen und sag mir, ob sich etwas ändert
var inputTopic = msg.topic;
var inputPayload = msg.payload;
// Logik zum Ändern des Topics und der Nutzlast in Abhängigkeit von sowohl dem Eingabe-Topic als auch der Eingabe-Nutzlast
if (inputTopic === "gladys/device/mqtt:sirene_1/feature/mqtt:sirene_1/state" && inputPayload === "0") {
// Anpassung des Topics und der Nutzlast von Gladys an zigbee2mqtt
msg.topic = "zigbee2mqtt/Sirène_1/set/warning/mode";
msg.payload = {
warning: {
mode: stop,
level: high,
strobe_level: high,
strobe: true,
strobe_duty_cycle: 10,
duration: 5
}
};
}
if (inputTopic === "gladys/device/mqtt:sirene_1/feature/mqtt:sirene_1/state" && inputPayload === "1") {
// Anpassung des Topics und der Nutzlast von Gladys an zigbee2mqtt
msg.topic = "zigbee2mqtt/Sirène_1/set/warning/mode";
msg.payload = {
warning: {
mode: emergency,
level: high,
strobe_level: high,
strobe: true,
strobe_duty_cycle: 10,
duration: 5
}
};
}
return msg;
Hast du es mit dem neuen Code versucht?
Tatsächlich stellt dieser Alarm seine Werte nicht korrekt dar, es gibt ein Issue Heiman HS2WD-E siren not really compatible ? · Issue #14424 · Koenkk/zigbee2mqtt · GitHub, um es zu melden, aber anscheinend kann man ihn mit dem neuen Code steuern.
bestätigt, dann müssen wir im Node-RED-Debugger schauen, was das ergibt
Mist, ich habe eine kaputte Kopie meiner anderen Funktion gemacht, bevor ich die Felder ausgefüllt habe… oh Mann! ![]()
Hier ist der richtige Code ![]()
var inputTopic = msg.topic;
var inputPayload = msg.payload;
// Logik zum Ändern des Topics und der Nutzlast in Abhängigkeit von sowohl dem Eingabetopic als auch der Nutzlast
// ****************************************************************************************************************************/
if (inputTopic === "gladys/device/mqtt:sirene_1/feature/mqtt:sirene_1/state" && inputPayload === "0") {
// Anpassung des Topics und der Nutzlast von Gladys an zigbee2mqtt
msg.topic = "zigbee2mqtt/Sirène_1/set";
msg.payload = {
warning: {
mode: "emergency", // mode : stop, burglar, fire, emergency, police_panic, fire_panic, emergency_panic
level: "high", // level : low, medium, high, very_high
strobe_level: "high", // strobe_level : low, medium, high, very_high
strobe: "true", // strobe : true, false
strobe_duty_cycle: "5", // strobe_duty_cycle : 1 à 10
duration: "10" // duration : Dauer in Sekunden
}
};
}
// ****************************************************************************************************************************/
// ****************************************************************************************************************************/
if (inputTopic === "gladys/device/mqtt:sirene_1/feature/mqtt:sirene_1/state" && inputPayload === "1") {
// Anpassung des Topics und der Nutzlast von Gladys an zigbee2mqtt
msg.topic = "zigbee2mqtt/Sirène_1/set";
msg.payload = {
warning: {
mode: "emergency", // mode : stop, burglar, fire, emergency, police_panic, fire_panic, emergency_panic
level: "high", // level : low, medium, high, very_high
strobe_level: "high", // strobe_level : low, medium, high, very_high
strobe: "true", // strobe : true, false
strobe_duty_cycle: "5", // strobe_duty_cycle : 1 à 10
duration: "10" // duration : Dauer in Sekunden
}
};
}
// ****************************************************************************************************************************/
return msg;