Ja, das habe ich auch aktuell nicht drin, weil ich da immer die Fehlermeldung bekomme, dass der Type Integer
erwartet wird und nicht String
Ist denn dein Version eine Zahl oder ein String ? Du kannst einen String ja auch in eine Zahl umwandeln.
Das ist ein String alias "2.3.10"
. Das zu parsen führt ja auch zu einem bescheidenen Ergebnis
Hast es in data reingepackt oder in value? Schreib ne 0 in value und dein String in das data Feld.
{
"instance": 0,
"minimum": 0,
"maximum": 0,
"current_value": 0,
"target_value": 0,
"last_value": 0,
"unit": "text",
"step_value": 1,
"editable": 0,
"type": 45,
"state": 1,
"last_changed": 1573065500,
"changed_by": 1,
"changed_by_id": 0,
"based_on": 1,
"data": "hier kommt die Version an"
}
und dann einfach den Data Wert über das DeviceNode ändern
Tomaten auf den Augen gehabt …
Danke euch
Danke für Eure Hilfe.
Letztendlich läuft es bei mir jetzt so:
var test = msg.payload;
if (test === "off")
return {payload:{"attribute":{"id":40,"value": 0}}};
if (test === "on")
return {payload:{"attribute":{"id":40,"value": 1}}};
Nun stehe ich schon wieder vor einer Herausforderung.
Ich möchte die Werte einiger Sensoren (Temperatur & Luftfeuchtigkeit) vom Homee zu Node Red holen. Als Vorlage Flow habe ich den Homee Systemstatus Flow genommen und abgewandelt.
Den RAM Node habe ich belassen und wird angezeigt.
Aber die Werte vom Feuchtigkeitssensor (node 70, id 553) werden nicht angezeigt. Beim Debug 14 kommt kein Wert an.
Das ist der Sensor (funktioniert nicht):
var attribute = msg.payload.attribute;
if (attribute && attribute.type === 553 && attribute.node_id === 70) {
return { payload: attribute.current_value }}
und das der Ram (funktioniert)
var attribute = msg.payload.attribute;
if(attribute && attribute.type === 311 && attribute.node_id === -1){
return {payload: attribute.current_value}}
Der Folgeschritt soll dann die Darstellung der Werte im Dashboard des HA sein.
Diesen Attribut Type gibt es nicht.
Das kann also nicht funktionieren.
Wenn das die Attribut ID ist dann muss da attribute.id stehen und nicht Type.
ok. wirft jedoch auch keine Daten aus.
var attribute = msg.payload.attribute;
if (attribute && attribute.id === 553 && attribute.node.id === 70) {
return { payload: attribute.current_value }}
Seltsam. Wenn ich die Nodes auslese mit Get nodes, dann bekomme ich die Daten.
Kannst du mal den Flow einstellen ?
Der Wert wird nur bei Änderung ausgegeben.
flows-popp-mold.pdf (3,3 KB)
Das ist der aktuelle flow
Wert wird nur bei Änderungen ausgegeben: Alle 20 min sollte der Sensor senden. es ist bisher kein Wert eingegangen.
Falls jemand eiune Idee hat, ist er herzlich willkommen.
Die Homee integration bei HA umfass ja leider keine Sensoren. Und deshalb bleibt mir nur der Weg über Node Red.
Attribut Luftfeuchtigkeit ist übrigens 553. Auf dem Screenshot oben habe ich irrtümlich 552 geknipst. Das ist die Temperatur.
Probiere mal bitte das in deiner Luftfeuchtefunktion
var attribute = msg.payload.attribute;
if (attribute && attribute.id === 553) {
return { payload: attribute.current_value }}
Damit bekommst du den Wert bei Änderung.
Wenn du über get:nodes/70 die Werte im Intervall abrufen magst dann muss das anders aussehen.
Beim Abruf über ein Intervall musst du dann das Attribute Array mit forEach auflösen und auf die ID filtern die du haben magst.
Wenn du das als Beispiel brauchst dann gib mir bescheid und ich schreibe dir das dann kurz fertig.
VG
Das scheint zu wirken.
Vielen Dank!!!
Habe noch die Temperatur 552 hinzugefügt. Gleich kommt noch der Taupunkt hinzu.
Damit bekomme ich jetzt alle Werte der Sensoren vom Homee auf Node Red unter HA.
Jetzt kann ich mich an den nächsten Schritt wagen.
Ein Node zu Home Assistant, um die Werte auf das Dashboard von HA zu bekommen.
Für das intervallmäßige Abfragen der Werte habe ich im aktuellen Projekt keinen Bedarf. Meine Sensoren senden alle 20 min Werte.
Aber ich Suche noch eine Möglichkeit, die Werte zu korrigieren.
Wert 70 entspricht z.B. geeicht gemessen z.B. 65.
Gibt es eine möglichkeit, daß vom „attribute.current_value“ der Wert 5 abgezogen und ausgegeben wird?
Du kannst ganz einfach in der Funktion beim übergeben an das homee Node die 5 abziehen.
return { payload: attribute.current_value-5}
hi zusammen,
vielleicht könnt ihr mir helfen, bin neu auf den Gebiet.
Ich habe Node RED auf meinem Pi installiert und wollte nun die Homee Nodes laden.
Pi hat das Betriebssystem:Debian GNU/Linux 11 (bullseye)
pi@raspianja:~/.node-red $ npm install node-red-contrib-homee
up to date, audited 66 packages in 3s
8 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
pi@raspianja:~/.node-red $ npm fund
node-red-project@0.0.1
├── https://github.com/sponsors/ljharb
│ └── qs@6.11.0, side-channel@1.0.4, call-bind@1.0.2, get-intrinsic@1.1.3, has-symbols@1.0.3, object-inspect@1.12.2
├── https://github.com/sponsors/feross
│ └── safe-buffer@5.2.1
└── https://github.com/sponsors/RubenVerborgh
└── follow-redirects@1.15.2
was kann ich jetzt noch machen, damit die Nodes geladen werden? Neustart Pi habe ich schon versucht?
Am einfachsten installierst du den homee-Node über den Palettenmanager:
Findest du direkt in NodeRed rechts oben die drei Striche.
Unter Installation „homee“ im Suchfeld eingeben und dann auf Installieren.
Danke, es hat geklappt
hi, ich habe noch eine Frage:
ich möchte den Anwesenheitsstatus aus homee überwachen.
In node red habe ich eine Funktion mit zwei prüfen hinterlegt:
if (!msg.payload.homeegram) { return }
if (msg.payload.homeegram.id === 127 && msg.payload.homeegram.state === 2) {
return { payload: 'abwesend'}
}
if (!msg.payload.homeegram) { return }
if (msg.payload.homeegram.id === 127 && msg.payload.homeegram.state === 1) {
return { payload: 'anwesend' }
}
wenn ich jetzt im homee auf Abwesend setzte, werden jedoch in der Debug Ausgabe node Red
beide Werte ausgegeben. Der Status scheint hier nicht richtig geprüft zu werden, oder wo liegt mein Fehler?
Ich habe gedacht, wenn Status = 2 gesendet wird, wird auch nur die abwesend im Debug Modus ausgegeben. Oder umgekehrt, wenn Status = 1 dann wird anwesend ausgegeben