Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Javascript snubler av og til med "+="


SveinHa

Anbefalte innlegg

Jeg gjorde nylig en liten endring i et av javascriptene i en funksjonsblokk og plutselig en gang i døgnet eller så (ikke bundet til noe fast klokkeslett) går variabelen "kWh_acc += 0.01;" helt bananas. Endret fra "kWh_acc = kWh_acc + 0.01;" og gjorde endringen for å strømlinjeforme scriptet litt. Opprinnelig funksjon har virket helt supert i et år mens den nye versjonen feiler ca en gang i døgnet. Scriptet kjører ca hvert 2. sekund men selve inkrementeringen skjer bare på visse betingelser.

 

I noderedguide.com står følgende å lese:

Sitat

Basic Operators

The built-in numerical operators include the usual: + (addition), – (subtraction), / (division), * (multiplication) and % (modulo).

Listing 5.3 numerical operations in JavaScript

  1. var a = 6;
  2. a = a + 1; // a is 7
  3. b = b % 2; // b is 3
  4. a++; // a is 8
  5. a–; //a is 7
  6. a += 3; // a is 10

...så += operatøren er gyldig.

 

kWh_acc skrives til kun i 1 funksjonsblokk og verdier som skrives er enten "0" eller "+= 0.01" men likevel blir verdien plutselig f.eks 3870.24000003805. Normalt skal alltid verdien være typisk under 5.

 

Noen gode programerere her (ja, jeg vet der er noen...) som har en plausibel teori?

Lenke til kommentar
Del på andre sider

Merksnodige greier... Endret tilbake til "kWh_acc = kWh_acc + 0.01" og det feiler i ny og ne likevel. Høyeste verdien jeg har sett er omlag 207132.10569 og den økningen skjer i løpet av EN gjennomkjøring...

 

d=new Date();
var kWh_part = context.get("kWh_part");
var prev_hour =context.get("prev_hour");
var previous_time =context.get("prevtime");
var prev_h_ts =context.get("prev_h_ts");

var kWh_acc =flow.get("kWh_acc");
var kWh_accGet = kWh_acc;	// For DEBUG, lagre lest verdi i annen variabel i tillegg for evt bruk senere

var value=Number(msg.payload);
var d=new Date();
var hours=d.getHours(); //the hour (0-23)
var timeest = 0;
var kWh_est = 0;
var kWh_prev_h = 0;

// Finn antall mS siden forrige melding ble mottatt
var end_time=d.getTime();
var difference=end_time-previous_time;
previous_time=end_time;

//Akkumuler måleverdi hver gang den dukker opp
kWh_part += (value * difference);
//node.warn("W x diff: " + (value * difference));

while (kWh_part > 36000000){            // Midlertidig variabel inneholder mer enn 0.01 kWh
                                        //ms til H, W til kW, 2 desimaler 1000*60*60*1000/100 = 36000000
    kWh_acc = kWh_acc + 0.01;                    //inkrementer akkumulert verdi
    kWh_part = kWh_part - 36000000;     //...og trekk fra samme verdi i kWh_part
    node.warn("kWh_acc inc: " + kWh_acc);
}

// DEBUG
if (kWh_acc > 10 || prev_hour != hours){
    node.warn("kWh_accGet:" + kWh_accGet);
    node.warn("kWh_acc:" + kWh_acc);
    node.warn("kWh_part:" + kWh_part);
    node.warn("prev_hour:" + prev_hour);
    node.warn("previous_time:" + previous_time);
    node.warn("prev_h_ts:" + prev_h_ts);
    node.warn("value:" + value);
    node.warn("hours:" + hours);
    node.warn("difference:" + difference);
    
}

// Ta vare på siste akkumulerte timeverdi og nullstill
if (prev_hour != hours){
    kWh_prev_h = kWh_acc;
    kWh_acc = 0;
    prev_h_ts = d.getTime(); //Tidspunkt for start estimering
    prev_hour = hours;
    flow.set("kWh_prev_h", kWh_prev_h);
    }

//Estimer total for denne time
if (kWh_acc >= 0.00){    //*****Vent litt hver time for å finne nyttige data å jobbe med
    timeest = d.getTime() - prev_h_ts;
    kWh_est = (kWh_acc/timeest) * (60*60*1000)
    }
else
    {
        kWh_est = kWh_prev_h;
    }

if (kWh_acc > 20){
    kWh_acc = kWh_accGet;
    node.warn("kWh_acc > 20, automatisk satt til kWh_accGet (sikkerhetsfunksjon)"+kWh_accGet);
} 

context.set("kWh_part",kWh_part);
context.set("prevtime", previous_time);
context.set("prev_hour", prev_hour);
context.set("timeest", timeest);
context.set("prev_h_ts", prev_h_ts);

flow.set("kWh_acc",kWh_acc);
flow.set("kWh_est", kWh_est);

return;

 

Har laget et par debug funksjoner, en som dumper alle aktuelle variabler til logg ved feil og en gang i timen "if (kWh_acc > 10 || prev_hour != hours){" og en annen som "sletter" katastrofen og gjør at ting og tang fortsetter "if (kWh_acc > 20){"

Lenke til kommentar
Del på andre sider

Vet du hvor mange ganger den går gjennom sløyfen? Hva om kwh_part er "unsigned int" og når du trekker fra 36000000 så kan kwh_part ende opp med å få en veldig stor verdi. Kanskje.

Men hvorfor har du en sløyfe der i det hele tatt? Kan du ikke bare regne ut kwh_acc og kwh_part?

Lenke til kommentar
Del på andre sider

stigvi skrev (1 minutt siden):

Men hvorfor har du en sløyfe der i det hele tatt? Kan du ikke bare regne ut kwh_acc og kwh_part?

Jeg hadde ikke sløyfe der i utgangspunktet men mistenkte at kWh_part noen ganger var større enn 36000000, normalt skal den ikke kunne bli det. Det er nok bare de gangene scriptet feiler...

 

Vet egentlig ikke hvilken type variabel det er men har sjekket at den i alle fall kan inneholde 100 ganger 36000000.

Lenke til kommentar
Del på andre sider

SveinHa skrev (Akkurat nå):

Jeg hadde ikke sløyfe der i utgangspunktet men mistenkte at kWh_part noen ganger var større enn 36000000, normalt skal den ikke kunne bli det. Det er nok bare de gangene scriptet feiler...

 

Vet egentlig ikke hvilken type variabel det er men har sjekket at den i alle fall kan inneholde 100 ganger 36000000.

Det vesentlig er om den er unsigned. Da feiler det hvis du gjør 23000000 - 36000000

Lenke til kommentar
Del på andre sider

stigvi skrev (11 minutter siden):

Det vesentlig er om den er unsigned

Sjekker, takker og bukker for tips.

 

Edit:

Et slikt script:

var a = 23000000;
var b = 36000000;
node.warn(a);
node.warn(b);
node.warn(a-b);

resulterer i:

image.png.323d9e1add3f38955fa455c1e112175d.png

Endret av SveinHa
Lenke til kommentar
Del på andre sider

Men her er det context.get("kWh_part") sin returverdi som bestemmer datatypen. 

Javascript har noen merkelig funksjonalitet ang datatyper og jeg er på gyngende grunn her. Kjenner ikke javascript godt nok. Men her må du se på sannsynlige årsaker. Javascript roter ikke med noe så enkelt som kWh_acc = kWh_acc + 0.01; Det nekter jeg å tro på.

  • Like 1
Lenke til kommentar
Del på andre sider

La inn:

node.warn(kWh_part)
node.warn(kWh_part - 45000000)

helt i slutten av scriptet og resultatet er:

image.png.fc012ebe9c1a1e3027bfc28bfc6d0c7e.png

 

Blir ikke stort klokere...

 

Men den automatiske feilrettingen gjør jobben, har ikke fått noen katastrofer siden jeg la inn den og eneste ulempen, bortsett at det er å rette feil feil, er at jeg mister 2 sekund energidata en gang og 2 i døgnet og det er uvesentlig.

Lenke til kommentar
Del på andre sider

node.warn(kWh_part - 45000000)

Dette setter jo ikke kWh_part til en ny verdi og du vil derfor ikke se hva som skjer. Her setter du en parameter til funksjonen warn og den har nok en annen datatype enn det kWh_part har. Ta heller å skriv ut kWh_part i koden din og se hva det er der.

Eller sett kWh_part til en int32 og se om feilen forsvinner

Lenke til kommentar
Del på andre sider

stigvi skrev (7 minutter siden):

Eller sett kWh_part til en int32 og se om feilen forsvinner

Vet ikke om jeg kan gjøre det. Har lett litt etter variabeltyper uten å finne noe...

 

Ny variant:

node.warn(kWh_part);
kWh_part = kWh_part - 45000000;
node.warn(kWh_part);

Samme resultat:

image.png.51cd0605b1e169d6939ab9623b9bca87.png

 

Lenke til kommentar
Del på andre sider

  • 10 måneder senere...

Denne her har gått litt i glemmeboken for jeg har laget en quick-and-dirty fix som ignorerer operasjonen når den feiler. I dag oppdaget jeg plutselig at data fra AMS-måleren ga noen hinsides feil verdier, det som skulle være aktuelt forbruk (som da skulle være mellom 0.0 og 0.1kW) var et tall på noen titalls siffer. Gikk inn i loggen og fant at fixen min hadde slått til akkurat da... Jeg har sett de merkelige tallene noen ganger tidligere men ikke koblet de til denne funksjonen... Da har jeg noe helt konkret å lete etter, fortsettelse følger...

Lenke til kommentar
Del på andre sider

  • 2 uker senere...
hflatoey skrev (På 8.11.2023 den 20.27):

har byttet fra Pulse til POW-U ams leser

Oppdaget i natt at Tibber Pulse ikke bare gir jevnlige feilmeldinger men også har lengre perioder der den ikke sender data i det hele tatt og det forklarer hvorfor jeg enkelte ganger overskrider 5 kWh grensen, PID-regulatoren får ikke data å jobbe med og klarer da ikke å gjøre jobben sin... Forrige mnd havnet jeg på snitt topp 3 på 5.01 kWh og denne mnd fikk jeg 1 time på 5.29 som pr i dag gir et topp 3 snitt på 4.97 kWh... Pow-U bestilt...

Lenke til kommentar
Del på andre sider

Eg har enda ikkje logget nokon feilmeldinger på min Pow-U 🙂

Her er det forskjellige variablene fra pow-u mqtt, du finne det selvfølgelig på siden deres men kan spare deg for nokon minutter 🙂

 

[
    {
        "id": "6ccae45488a512f5",
        "type": "change",
        "z": "8772153e519ddf77",
        "name": "obis_list_version",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.data.lv",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 640,
        "y": 5830,
        "wires": [
            []
        ]
    },
    {
        "id": "a7a5a1e9bbb5f9ee",
        "type": "change",
        "z": "8772153e519ddf77",
        "name": "meter_ID",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.data.id",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 610,
        "y": 5870,
        "wires": [
            []
        ]
    },
    {
        "id": "644e5c9b35933f7a",
        "type": "change",
        "z": "8772153e519ddf77",
        "name": "meter_model",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.data.type",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 620,
        "y": 5910,
        "wires": [
            []
        ]
    },
    {
        "id": "a5e9e9299133ba6f",
        "type": "change",
        "z": "8772153e519ddf77",
        "name": "active_import",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.data.P",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 620,
        "y": 5950,
        "wires": [
            []
        ]
    },
    {
        "id": "7bc00ccd14c3a1b4",
        "type": "change",
        "z": "8772153e519ddf77",
        "name": "active-export",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.data.PO",
                "tot": "msg"
            },
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "power_negative",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 620,
        "y": 5990,
        "wires": [
            []
        ]
    },
    {
        "id": "d12ed57ee18ea3f6",
        "type": "change",
        "z": "8772153e519ddf77",
        "name": "react_pow_pos",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.data.Q",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 630,
        "y": 6030,
        "wires": [
            []
        ]
    },
    {
        "id": "a00bb2e453d570e6",
        "type": "change",
        "z": "8772153e519ddf77",
        "name": "react_pow_neg",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.data.QO",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 630,
        "y": 6070,
        "wires": [
            []
        ]
    },
    {
        "id": "508002709318ff6b",
        "type": "change",
        "z": "8772153e519ddf77",
        "name": "curr_I1",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.data.I1",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 610,
        "y": 6110,
        "wires": [
            []
        ]
    },
    {
        "id": "7af48b1247ada151",
        "type": "change",
        "z": "8772153e519ddf77",
        "name": "curr_I2",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.data.I2",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 610,
        "y": 6150,
        "wires": [
            []
        ]
    },
    {
        "id": "7aa5e29086298785",
        "type": "change",
        "z": "8772153e519ddf77",
        "name": "curr_I3",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.data.I3",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 610,
        "y": 6190,
        "wires": [
            []
        ]
    },
    {
        "id": "71ddc234246f06f0",
        "type": "change",
        "z": "8772153e519ddf77",
        "name": "volt_U1",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.data.U1",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 610,
        "y": 6230,
        "wires": [
            []
        ]
    },
    {
        "id": "5c9b85344e1879c6",
        "type": "change",
        "z": "8772153e519ddf77",
        "name": "volt_U2",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.data.U2",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 610,
        "y": 6270,
        "wires": [
            []
        ]
    },
    {
        "id": "e5fd43b38afcea82",
        "type": "change",
        "z": "8772153e519ddf77",
        "name": "volt_U3",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.data.U3",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 610,
        "y": 6310,
        "wires": [
            []
        ]
    },
    {
        "id": "5b30d545dfffc308",
        "type": "change",
        "z": "8772153e519ddf77",
        "name": "date_time",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.t",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 610,
        "y": 6350,
        "wires": [
            []
        ]
    },
    {
        "id": "bf0ac4623924b3a1",
        "type": "change",
        "z": "8772153e519ddf77",
        "name": "act_energy_pos",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.data.tPI",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 630,
        "y": 6390,
        "wires": [
            []
        ]
    },
    {
        "id": "e5b4eea0966368ae",
        "type": "change",
        "z": "8772153e519ddf77",
        "name": "act_energy_neg",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.data.tPO",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 630,
        "y": 6430,
        "wires": [
            []
        ]
    },
    {
        "id": "a593d868c2942819",
        "type": "change",
        "z": "8772153e519ddf77",
        "name": "react_energy_pos",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.data.tQI",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 640,
        "y": 6470,
        "wires": [
            []
        ]
    },
    {
        "id": "3b779dbe7c0bbec8",
        "type": "change",
        "z": "8772153e519ddf77",
        "name": "react_energy_neg",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.data.tQO",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 640,
        "y": 6510,
        "wires": [
            []
        ]
    },
    {
        "id": "f98b54ec89d424c6",
        "type": "change",
        "z": "8772153e519ddf77",
        "name": "power_export_today",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.realtime.de",
                "tot": "msg"
            },
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "power_export_today_kWh",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 650,
        "y": 6550,
        "wires": [
            []
        ]
    },
    {
        "id": "ab727fe1b6875496",
        "type": "change",
        "z": "8772153e519ddf77",
        "name": "power_import_today",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.realtime.d",
                "tot": "msg"
            },
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "power_import_today_kWh",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 650,
        "y": 6590,
        "wires": [
            []
        ]
    },
    {
        "id": "17fce8e6fa731798",
        "type": "junction",
        "z": "8772153e519ddf77",
        "x": 470,
        "y": 5830,
        "wires": [
            [
                "508002709318ff6b",
                "7af48b1247ada151",
                "7aa5e29086298785",
                "71ddc234246f06f0",
                "5c9b85344e1879c6",
                "e5fd43b38afcea82",
                "5b30d545dfffc308",
                "a5e9e9299133ba6f",
                "7bc00ccd14c3a1b4",
                "d12ed57ee18ea3f6",
                "a00bb2e453d570e6",
                "644e5c9b35933f7a",
                "a7a5a1e9bbb5f9ee",
                "6ccae45488a512f5",
                "bf0ac4623924b3a1",
                "e5b4eea0966368ae",
                "a593d868c2942819",
                "3b779dbe7c0bbec8",
                "f98b54ec89d424c6",
                "ab727fe1b6875496"
            ]
        ]
    }
]

 

  • Like 1
Lenke til kommentar
Del på andre sider

  • 2 uker senere...

Da har Tibber Pulse blitt erstattet av en Pow-U. Fikk ikke kontakt med måleren med en gang men mail til leverandøren løste det kjapt med en mod av flatkabelen (klipp av 6 av de 8 lederene i kabelen).

 

Måtte lage en dekoder for å plukke ut det jeg hadde bruk for (og litt til...). Alle variabler lagres i context så en lett ser hva som mottas og meldingene som sendes ut fra parser har variabelnavn som topic og verdi som payload.

image.png.fbb4f75959037666600bc30c87de8f1f.png

[{"id":"65ea1e7bb98daffa","type":"mqtt in","z":"d49bfe3335c3f7c9","g":"dbfdc3187c26119e","name":"","topic":"AMS2444","qos":"2","datatype":"json","broker":"6db118ed1b0c56de","nl":false,"rap":true,"rh":0,"inputs":0,"x":510,"y":230,"wires":[["f397b4d289507a40"]]},{"id":"e1079fb657039456","type":"switch","z":"d49bfe3335c3f7c9","g":"dbfdc3187c26119e","name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"lv","vt":"str"},{"t":"eq","v":"id","vt":"str"},{"t":"eq","v":"type","vt":"str"},{"t":"eq","v":"P","vt":"str"},{"t":"eq","v":"PO","vt":"str"},{"t":"eq","v":"Q","vt":"str"},{"t":"eq","v":"QO","vt":"str"},{"t":"eq","v":"I1","vt":"str"},{"t":"eq","v":"I2","vt":"str"},{"t":"eq","v":"I3","vt":"str"},{"t":"eq","v":"U1","vt":"str"},{"t":"eq","v":"U2","vt":"str"},{"t":"eq","v":"U3","vt":"str"},{"t":"eq","v":"t","vt":"str"},{"t":"eq","v":"tPI","vt":"str"},{"t":"eq","v":"tPO","vt":"str"},{"t":"eq","v":"tQI","vt":"str"},{"t":"eq","v":"tQO","vt":"str"},{"t":"eq","v":"de","vt":"str"},{"t":"eq","v":"d","vt":"str"}],"checkall":"true","repair":false,"outputs":20,"x":710,"y":290,"wires":[["28da6720644d498d"],["77bb37dba05492c8"],["02e52739b1778564"],["601ad97359338ee8","0d448e2eda93e3f5"],["cb5c07e95696c22f"],["f478071c8e5cb5f8"],["6415c3d212573f40"],["e17a590eaf38c069"],["ab769ab7a73d2f1b"],["b92108f128318400"],["c7bd2bc1e2d979ec"],["a068057361d32681"],["9fa94094cca4661e"],["e00a5ecf722b1935"],["306b9dbcfdc44198","d73316cd8666bfbe"],["88bb36685a27ac4e","53099fc91fe8e897"],["bc3892361a9d5c08"],["cfd7fc377135778d"],["d45b7fff6ee76fa5"],["dc19fb1fcb2b42d0"]]},{"id":"f397b4d289507a40","type":"function","z":"d49bfe3335c3f7c9","g":"dbfdc3187c26119e","name":"Pow-U AMS parser","func":"var tmp = msg.payload.data;\nvar msg2 = {}\nvar index = 0;\nfor (const key in tmp) {\n  if (tmp.hasOwnProperty(key)) {\n        //node.warn(`Index: ${index}, ${key}: ${tmp[key]}`);\n        msg2.topic = key;\n        msg2.payload = tmp[key];\n        context.set(msg2.topic,msg2.payload);\n        node.send(msg2);\n        index++;\n    }\n}\ntmp = msg.payload;\nindex = 0;\nfor (const key in tmp) {\n  if (tmp.hasOwnProperty(key)) {\n        //node.warn(`Index: ${index}, ${key}: ${tmp[key]}`);\n        msg2.topic = key;\n        msg2.payload = tmp[key];\n        context.set(msg2.topic,msg2.payload);\n        node.send(msg2);\n        index++;\n    }\n}\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":540,"y":290,"wires":[["e1079fb657039456"]]},{"id":"6db118ed1b0c56de","type":"mqtt-broker","name":"DaleMQTT","broker":"172.16.0.94","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"5","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""}]

 

En mer kompakt liste over variabler enn den som @hflatoey postet:

Sitat

obis_list_version: lv
meter_ID: id
meter_model: type
active_import: P
active-export: PO
react_pow_pos: Q
react_pow_neg: QO
curr_I1: I1
curr_I2: I2
curr_I3: I3
volt_U1: U1
volt_U2: U2
volt_U3: U3
date_time: t
act_energy_pos: tPI
act_energy_neg: tPO
react_energy_pos: tQI
react_energy_neg: tQO
power_export_today: de
power_import_today: d

Ser ut til å funke supert så langt.

Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.