Mal wieder virtuelle Geräte - jetzt aber richtig!

Wasserzähler Opensprinkler in Homee per mqtt & nodered integrieren.
Ich habe meinen Bewässerungscomputer (Opensprinkler) per mqtt angemeldet.

Unter „opensprinkler/sensor/flow“ wirft er am Ende der Laufzeit die Gesamt Wassermenge aus:
{„count“:5,„volume“:5.00}

Ich möchte nun nur den Wert von count im Wasserzähler haben. Wie mache ich das?

{Attribute:{id:000,value:msg.payload.count}}

So nach dem Motto muss das dann aussehen.
Muss nur ordentlich formatiert werden.

Danke! Der Wert wird durchgereicht, aber nicht summiert.
Wie bekomme ich das kumuliert?

In der Funktion habe ich
var wert = parseFloat(msg.payload.count);
return { payload: { „attribute“: { „id“: 48, „value“: wert } } };
Homee node
image

Wann wird der Wert gesendet ?
Du kannst innerhalb der Funktion rechnen.
Dazu speicherst du den Wert in einem Speicher den du dann anrufst.
Dazu muss man natürlich genau wissen wann was gesendet wird.

Der Wert wird einmal gesendet, sobald das Ventil wieder geschlossen wird, also immer beim Beenden des Programms.

var a = flow.get("a")||0;
var b = msg.payload.count;
b = a+b;
flow.set("a",b);
return{payload: {"attribute":{"id":48,"value":b}}};

Schau dir das mal an @homesmarthome .

1 „Gefällt mir“

Hi, habe auch noch eine frage wo ich aktuell nicht weiter komme.
Habe zwei Geräte von IoBroker in Node-Red.
Wenn Gerät YA 20 ausgibt und Gerät WTT 5 ausgibt soll ein Virtueller Schalter umgelegt werden mit Value 1.
Es fehlt mir das wissen 2 Variablen anzulegen wo die Werte von Geräten kommen und um diese als Bedingung zu nutzen.
Ich habe schon was gebaut aber ich bekomme immer nur die eine Variable YA zum laufen. Denke ich bin hier auf dem falschen Weg unterwegs.
Vielleicht kann mir einer helfen :slight_smile:
Funktion:

var YA = parseInt(msg.payload);
var WTT = parseInt(msg.payload);

if (YA < 20) {
    YA = 0
}
else if  (YA >= 20 && YA <= 40 && WTT <= 10 && WTT >= 5) {
    YA = 1
}

Wie kommen denn die Werte an?
In einem Payload oder in mehreren Payload‘s.

Die Werte kommen direkt aus dem Gerät und dahinter habe ich die Funktion wie oben beschrieben. Nur weiß ich nicht wie ich den Wert von dem anderen Gerät mit rein bekomme.

image

Kommen die Werte aus einem Device oder aus zwei iobroker Node ?

Du musst die Werte separat speichern um beide dann in der Funktion nutzen zu können.

Du könntest auf das topic filtern und den payload dann in wine Flow oder global Variable speichern.

if ( msg.topic === "ya" ){
flow.set("ya", msg.payload);
}
else if (msg.topic === "wtt"){
flow.set("wtt",msg.payload);
}
var ya = flow.get("ya")||0;
var wtt = flow.get("wtt")||0;

Die Funktion muss dann von beiden Geräten getriggert werden.

1 „Gefällt mir“

Die Werte kommen von einem Device was bei Iobroker über den Zigbee Adapter verbunden ist.
Ich habe es jetzt mit einem neuen Flow und mit einfachen mitteln getestet und habe es hinbekommen :grin: Meine gewünschte Funktion ist da, kannst ja mal drüber schauen :slight_smile: Danke!!!

[
    {
        "id": "0331d71a0156cca2",
        "type": "tab",
        "label": "Flow 1",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "c593fa8ed6d159ad",
        "type": "inject",
        "z": "0331d71a0156cca2",
        "name": "",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "10",
        "payloadType": "num",
        "x": 190,
        "y": 80,
        "wires": [
            [
                "f674129b675fe767"
            ]
        ]
    },
    {
        "id": "819cbff5dcea3d1d",
        "type": "inject",
        "z": "0331d71a0156cca2",
        "name": "",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "20",
        "payloadType": "num",
        "x": 190,
        "y": 160,
        "wires": [
            [
                "9689a488f5d352c2"
            ]
        ]
    },
    {
        "id": "f674129b675fe767",
        "type": "function",
        "z": "0331d71a0156cca2",
        "name": "A",
        "func": "flow.set(\"A\", msg.payload);\n\nvar A = flow.get(\"A\") || 0;\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 390,
        "y": 80,
        "wires": [
            [
                "f9c71b2360065af5"
            ]
        ]
    },
    {
        "id": "9689a488f5d352c2",
        "type": "function",
        "z": "0331d71a0156cca2",
        "name": "B",
        "func": "flow.set(\"B\", msg.payload);\n\nvar B = flow.get(\"B\") || 0;\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 390,
        "y": 160,
        "wires": [
            [
                "f9c71b2360065af5"
            ]
        ]
    },
    {
        "id": "f9c71b2360065af5",
        "type": "debug",
        "z": "0331d71a0156cca2",
        "name": "debug 24",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 560,
        "y": 120,
        "wires": []
    },
    {
        "id": "7bf852c0ae949147",
        "type": "function",
        "z": "0331d71a0156cca2",
        "name": "Vergleichen / Bedinungen",
        "func": "var A = flow.get(\"A\") || 0;\nvar B = flow.get(\"B\") || 0;\n\n\nif (B < 5) {\n   B = 0\n}\nelse if (B > 5 && A > 5) {\n    B = 1\n}\n\n\nmsg.payload = {\"attribute\":{\"id\":1111, \"value\": B}};\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 350,
        "y": 300,
        "wires": [
            [
                "c0871a0fe0812e08"
            ]
        ]
    },
    {
        "id": "c0871a0fe0812e08",
        "type": "debug",
        "z": "0331d71a0156cca2",
        "name": "debug 25",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 560,
        "y": 300,
        "wires": []
    },
    {
        "id": "3a5037c6af7a4bb0",
        "type": "comment",
        "z": "0331d71a0156cca2",
        "name": "Variablen anlegen",
        "info": "",
        "x": 290,
        "y": 40,
        "wires": []
    },
    {
        "id": "3b1326057444cc0c",
        "type": "inject",
        "z": "0331d71a0156cca2",
        "name": "",
        "props": [],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "x": 150,
        "y": 300,
        "wires": [
            [
                "7bf852c0ae949147"
            ]
        ]
    },
    {
        "id": "d39eedcee0ef670e",
        "type": "comment",
        "z": "0331d71a0156cca2",
        "name": "Variablen - Bedinungen mit einer Zahl",
        "info": "",
        "x": 330,
        "y": 260,
        "wires": []
    }
]
1 „Gefällt mir“

Viele Wege führen nach Rom.
Wichtig ist das du es hinbekommen und wieder was gelernt hast.
:+1::+1:

1 „Gefällt mir“

Vielen Vielen und noch mehr Dank! Eine großartige Hilfe!

Ich habe mir jetzt zwei virtuelle Wasseruhren gemacht. Last Run und Kumuliert.
Damit habe ich jetzt direkt im Homee eine einfache Kontrolle über meinen Wasserverbrauch aus der Zisterne für die Gartenbewässerung.

image

4 „Gefällt mir“

Sehr schick geworden.

Ich unterstütze gerne die homee User und diese Community denn nur so können wir uns weiter entwickeln und alles am laufen halten.

15 „Gefällt mir“

Jetzt habe ich noch eine Frage zu meinem Wasserzähler.
Wie kann ich erreichen, daß die Homee Datenbank den kumulierten Wasserverbrauch speichert und einen Chart generiert?

image

Hallo liebe Community,

Ich möchte gerne Werte von meiner PV Anlage (E3DC) in Homee verwenden können.
Dazu habe ich (diese Woche) einen Rasp. PI aufgesetzt und den IO Broker mit Node Red installiert.
Die Werte der PV Anlage bekomme ich den IO-Broker und von dort in Node Red. Den Virtuellen Homee bekomme ich auch hin. Jedoch kann ich die Wert aus IO Broker nicht in den Energiemanager des virtuellen Homee übergeben. Es kommt immer eine Fehlermeldung.
Leider habe ich nirgends etwas gefunden was mir als Laie weiterhilft.

Wenn mir jemand helfen könnte wäre es echt super!

Vielen Dank im Voraus und viele Grüße
Joe

Du musst das Format im Template Node ändern.

{’attribute’:{’id’:000,’value’:payload}}
1 „Gefällt mir“

Hallo Micha,
Vielen Dank für die super schnelle Antwort.
Habe es jetzt so eingetragen:


und dann kommt folgende Fehlermeldung:

Sorry, bin totaler Anfänger.
PS: ohne eure super Arbeit hätte ich nie eine Chance so weit zu kommen.
Vielen Dank dafür!
Grüße
Joe

Du musst das payload zusätzlich in eine doppelt geschweifte Klammer setzen {{payload}}

2 „Gefällt mir“

Musste leider weg.
Super, hat geklappt! Vielen Dank nochmals! Für den super Support und die ganze Arbeit die du/ihr hier rein gesteckt habt damit einer wie ich es auch hinbekommt.
Viele Grüße
Joe

3 „Gefällt mir“