Acties:
  • 0 Henk 'm!

  • rorie
  • Registratie: Maart 2007
  • Laatst online: 16-09 11:44
bedankt voor je snelle reactie, klopt het dat je in jou voorbeeld geen gebruik maakt van de reset optie? Weet je misschien hoe dit werkt, wat moet je nou precies sturen naar de trigger node om hem te resetten?
Gizz schreef op donderdag 11 juni 2020 @ 13:04:
@rorie Dat kun je simpel voor elkaar krijgen met de trigger node. Zie ook: Gizz in "Node-RED - grafisch 'programmeren' (bijv. voor domotica)" Daar laat ik dat letterlijk zien, al is mijn vertraging 30 seconden i.p.v. 5 minuten :)

Acties:
  • 0 Henk 'm!

  • Gizz
  • Registratie: Maart 2001
  • Laatst online: 19:00

Gizz

Dunder-Mifflin, Inc.

@rorie Je stuurt niets naar de triggernode om hem te resetten, hij telt af om zichzelf te resetten.

Je voedt die node alleen met het signaal als de sensor aan gaat. Zodra dat gebeurt stuurt hij, in mijn voorbeeld, een berichtje door (On) waarmee de lamp aan gaat. Ontvangt hij binnen 30 seconden niet nog een aan van de sensor, dan stuurt hij berichtje door (Off) waarmee de lamp uit gaat.

Ontvangt hij in de tussentijd nog een aan van de sensor (er is nog steeds iemand aanwezig), dan begint de teller opnieuw af te tellen van 30 naar 0. Dat is het vinkje bij extend delay if new message arrives.

Die 30 seconden zet je in jouw geval op 300 seconden.

We zijn alleen geïnteresseerd in wanneer de sensor beweging waarneemt. Informatie over dat hij geen beweging waarneemt is in dit geval overbodig, omdat we werken met een vaste tijdsperiode nadat de sensor voor het laatst beweging heeft waargenomen :)

[ Voor 24% gewijzigd door Gizz op 11-06-2020 13:23 ]

Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX


Acties:
  • 0 Henk 'm!

  • rorie
  • Registratie: Maart 2007
  • Laatst online: 16-09 11:44
Bedankt nogmaals voor deze uitleg, misschien heb ik teveel naar dit voorbeeld gekeken waar de reset wel gebruikt word "Node-RED Pt.3: Trigger and Events: All nodes. Motion Lighting and Actionable Notifications.". Ik ga er eens verder mee experimenteren.
Gizz schreef op donderdag 11 juni 2020 @ 13:20:
@rorie Je stuurt niets naar de triggernode om hem te resetten, hij telt af om zichzelf te resetten.

Je voedt die node alleen met het signaal als de sensor aan gaat. Zodra dat gebeurt stuurt hij, in mijn voorbeeld, een berichtje door (On) waarmee de lamp aan gaat. Ontvangt hij binnen 30 seconden niet nog een aan van de sensor, dan stuurt hij berichtje door (Off) waarmee de lamp uit gaat.

Ontvangt hij in de tussentijd nog een aan van de sensor (er is nog steeds iemand aanwezig), dan begint de teller opnieuw af te tellen van 30 naar 0. Dat is het vinkje bij extend delay if new message arrives.

Die 30 seconden zet je in jouw geval op 300 seconden.

We zijn alleen geïnteresseerd in wanneer de sensor beweging waarneemt. Informatie over dat hij geen beweging waarneemt is in dit geval overbodig, omdat we werken met een vaste tijdsperiode nadat de sensor voor het laatst beweging heeft waargenomen :)

Acties:
  • 0 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 22:21
@Gizz even zitten kijken naar die range node maar dan moet je nog steeds gebruik maken van meerdere nodes onder elkaar. Had ergens verwacht dat het mogelijk zou zijn om meerdere outputs op één input te hebben maar die vlieger gaat dus niet op. Dan is het werken met een subflow zoals ik nu doe in mijn ogen overzichtelijker? Of ben ik nou gek?

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • 0 Henk 'm!

  • Gizz
  • Registratie: Maart 2001
  • Laatst online: 19:00

Gizz

Dunder-Mifflin, Inc.

@Toppe Waarom heb je meerdere outputs nodig? :)

Even je huidige opzet erbij:

Afbeeldingslocatie: https://tweakers.net/i/1XIzVeKDnkJo-J8r5IQzshYt-nQ=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/xZjFd71HJpnYWq7ORWZi483C.png?f=user_large

Je zult nu iets gemaakt hebben als (ik verzin even getallen en dat de lamp een klein beetje moet branden als het erg donker is en feller als er meer omgevingslicht is. Wellicht heb jij het juist andersom maar dat maakt voor het voorbeeld niet uit):
  • Lux <10, dan naar uitgang 1. Uitgang 1 geeft een variabele 1 die vervolgens in je template gebruikt wordt.
  • Lux tussen 10 en 20? Dan naar uitgang 2. Die levert een variabele van 10 op die je vervolgens in je template gebruikt.
  • Lux tussen 20 en 40? Dan naar uitgang 3. Die levert een variabele van 30 op die je vervolgens in je template gebruikt.
Enzovoorts..

Deze hele constructie vervang je door 1 range node. Er komt een waarde (lux) in en er komt een getal (percentage verlichting) uit die je in je template gebruikt.

Die node stel je bijvoorbeeld zo in:
Afbeeldingslocatie: https://tweakers.net/i/B_5J_0SyO9OqRsxPq4P51nZRumQ=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/sAmcL5BvESuLuITJDgROGAUt.png?f=user_large
Wordt er 0 lux ingevoerd, dan komt het getal 0 uit de node. Bij 50 lux 25%, bij 100 lux 50% en bij 200 lux 100%. En letterlijk alle andere waardes van 0 tot 200 worden zo vloeiend omgerekend naar een percentage van 0 tot 100% verlichting.

Jij hebt iets gebouwd met 5 mogelijke uitkomsten, die je vervolgens weer samen laat komen in je template node. Deze range node heeft in dat opzicht eigenlijk 101 uitgangen (van 0 tot 100 is 101 verschillende mogelijkheden) maar die laat natuurlijk maar 1 draadje zien.

Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX


Acties:
  • 0 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 22:21
Gizz schreef op donderdag 11 juni 2020 @ 19:56:
@Toppe Waarom heb je meerdere outputs nodig? :)

Even je huidige opzet erbij:

[Afbeelding]

Je zult nu iets gemaakt hebben als (ik verzin even getallen en dat de lamp een klein beetje moet branden als het erg donker is en feller als er meer omgevingslicht is. Wellicht heb jij het juist andersom maar dat maakt voor het voorbeeld niet uit):
  • Lux <10, dan naar uitgang 1. Uitgang 1 geeft een variabele 1 die vervolgens in je template gebruikt wordt.
  • Lux tussen 10 en 20? Dan naar uitgang 2. Die levert een variabele van 10 op die je vervolgens in je template gebruikt.
  • Lux tussen 20 en 40? Dan naar uitgang 3. Die levert een variabele van 30 op die je vervolgens in je template gebruikt.
Enzovoorts..

Deze hele constructie vervang je door 1 range node. Er komt een waarde (lux) in en er komt een getal (percentage verlichting) uit die je in je template gebruikt.

Die node stel je bijvoorbeeld zo in:
[Afbeelding]
Wordt er 0 lux ingevoerd, dan komt het getal 0 uit de node. Bij 50 lux 25%, bij 100 lux 50% en bij 200 lux 100%. En letterlijk alle andere waardes van 0 tot 200 worden zo vloeiend omgerekend naar een percentage van 0 tot 100% verlichting.

Jij hebt iets gebouwd met 5 mogelijke uitkomsten, die je vervolgens weer samen laat komen in je template node. Deze range node heeft in dat opzicht eigenlijk 101 uitgangen (van 0 tot 100 is 101 verschillende mogelijkheden) maar die laat natuurlijk maar 1 draadje zien.
Ah, wacht even. Dit is top! Heb zelf inderdaad meer licht bij meer lux, en dan maar handmatig wat getallen ingevoerd. Dacht dat z’n range node het zelfde deed, maar dan in één node.

Morgen maar eens spelen als de kleine in bed ligt :+

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • 0 Henk 'm!

  • Jovink538
  • Registratie: Juli 2003
  • Laatst online: 18-09 22:31
Gizz schreef op donderdag 11 juni 2020 @ 09:32:
@Jovink538 Ik begrijp je code niet helemaal, maar ik ben dan ook zelf een beginner qua javascript.
Even je code los hier, zodat niemand het eerst in NR hoeft te importeren:
Sorry ja dat had ik moeten doen.
Opmerkingen/vragen van mijn kant:

• Waarom gebruik je als type de const? Dit zijn waardes die steeds wijzigen, dus dan gebruik je gewoon var.
Ik vond bovenstaande op internet :) en op deze manier kreeg ik de waarde die ik nodig had.
In mijn geval de luchtvochtigheid. Dus ik dacht dat werkt dan ga ik op die manier verder met mijn berekening.
Dit lijkt mij logischer als berekening:
code:
1
Math.round((msg.payload * 0.9) + (humidity * 0.1));

Dan wordt eerst msg.payload * 0.9 gedaan. Daarbij wordt de uitkomst van humidity * 0.1 opgeteld en het geheel wordt afgerond naar een geheel getal. Als jij er dan voor zorgt dat msg.payload en humidity de juiste waarde bevatten heb je wat je wilt.
Ik ga deze code proberen! Alleen zie ik nu dat de output een string is. Klopt dat?

Acties:
  • 0 Henk 'm!

  • Dacuuu
  • Registratie: Maart 2009
  • Laatst online: 18:27
Jovink538 schreef op woensdag 10 juni 2020 @ 21:57:
Voor mijn badkamer afzuiging wil ik een flow maken die iedere 10 minuten een berekening maken die het gemiddelde van de luchtvochtigheid berekend.
Maar ik krijg het niet voor elkaar.

De berekening is als volgt iedere 10 minuten gemiddelde_lv= gemiddelde lv * .9 + luchtvochtigheid * 0.1
Dit is voor mij de perfecte manier.

Ik deed het in home assistant op deze manier
code:
1
{{ (float(states.variable.gemiddelde.state) * 0.9 + float(states.sensor.thermometer_douche_2.state) * 0.1) | round(2) }}'


Maar nu krijg ik het dus niet voor elkaar. Ik moet ook zeggen dat ik geen code kan schrijven.
Ik heb nu het volgende.

code:
1
[{"id":"92f37412.e70bc8","type":"function","z":"e1c8b6b6.94701","name":"","func":"const entities = global.get('homeassistant').homeAssistant.states;\nconst humidity = entities[\"sensor.thermometer_douche_2\"].state;\n\n// msg.payload = Math.float(msg.payload) * 0.9 + Math.float(humidity) * 0.1) | round(2)\nmsg.payload = Math.round(2) msg.payload * 0.9 + humidity * 0.1\nreturn msg;","outputs":1,"noerr":4,"x":310,"y":260,"wires":[["697f40f.18f624"]]}]
Ik heb 2 sensors, 1 in de badkamer en 1 in de huiskamer, dan trek ik de vochtigheid van de badkamer af van de huiskamer, als dat verschil groter is dan 15 (even spelen met dit getal naar wens), dan gaat de afzuiging aan.

Op deze manier ben ik verlost van harde cijfers, want de luchtvochtigheid wisselt nog wel is in huis

https://i.imgur.com/wBM08TH.png

Acties:
  • 0 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 22:21
@Gizz Nu er even mee bezig en loop toch tegen één ding aan:

Momenteel gebruik ik nog een aparte functie om de waarde vanuit de lux naar helderheid om te zetten naar een formaat waar HA wat mee kan:
code:
1
{ "data" : {"brightness_pct" : "{{{payload}}}"}}


Wat ik geprobeerd heb:
code:
1
2
{ "data" : {"brightness_pct" : "{{{payload}}}"}}
{"brightness_pct" : "{{{payload}}}"}


Foutmelding:
code:
1
Call-service API error.  Error Message: extra keys not allowed @ data['data']


Ik ben al eens eerder aan het stoeien geweest om die functie te kunnen vergeten, maar krijg 'm niet zo aan de praat. Jij een idee hoe ik dit het beste kan oplossen?

[ Voor 20% gewijzigd door Toppe op 12-06-2020 10:44 ]

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • 0 Henk 'm!

  • Gizz
  • Registratie: Maart 2001
  • Laatst online: 19:00

Gizz

Dunder-Mifflin, Inc.

@Toppe Ik snap niet helemaal wat je bedoelt. Is je insteek om de creeer template function node te kunnen verwijderen? Ik weet niet of dat kan, maar ik werk zelf dan ook niet met HA :)

Zelf gebruik ik voor templates de template node, maar dat is achter de schermen stiekem ook gewoon javascript natuurlijk. Hier een voorbeeldje van hoe ik de template node gebruik om de waarde van twee sensoren in het JSON-format te zetten dat domoticz vervolgens begrijpt:

Afbeeldingslocatie: https://tweakers.net/i/oZaVz5PFX_NpUveAj4gII5ICNK8=/800x/filters:strip_exif()/f/image/CRPOBqfhyVzBnBXeIEzy21No.png?f=fotoalbum_large

De move nodes zetten de waardes in respectievelijk flow.temp en flow.hum. Vervolgens is dit de inhoud van de template node:

code:
1
{"command": "udevice", "idx": 570, "nvalue": 0,  "svalue": "{{flow.temp}};{{flow.hum}};0"}


Ik neem aan dat je voor het juiste format dat HA vereist ook gewoon een template node kunt gebruiken i.p.v. een function node.

Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX


Acties:
  • 0 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 22:21
@Gizz

Ik moet data mee sturen, nu doe ik dat nog eerst door een functie te maken:
Afbeeldingslocatie: https://tweakers.net/i/oNhy_qufrWAAZUkcRV3P5eD-lqQ=/800x/filters:strip_exif()/f/image/dtLHCHsMfcsAwcdNEDTdhAPL.png?f=fotoalbum_large

En dan door te sturen naar de node:
Afbeeldingslocatie: https://tweakers.net/i/Mb4g8bs6ZsCsBq9l2Z2GKNFdriM=/800x/filters:strip_exif()/f/image/sxw1Y2RGR8nYC2YO8xz1CT9N.png?f=fotoalbum_large

Het lijkt me alleen dat dit mogelijk moet zijn zonder gebruik te maken van die function node, aangezien die niets spannends doet behalve het maken van een JSON string en vervolgens doorstuurt.

Alleen accepteert Node-Red (althans, de HA node) niet gewoon de code zoals ik verwacht had:
Afbeeldingslocatie: https://tweakers.net/i/TF1xvE7r46swzhjVnjyEqfZcjEw=/800x/filters:strip_exif()/f/image/ebc3wrvg6J7tx7jH93hxYKuX.png?f=fotoalbum_large

Overigens gebruik ik ook de template node, al die nieuwe dingen tegelijk is soms geen goeie combinatie... :+

[ Voor 3% gewijzigd door Toppe op 12-06-2020 10:51 ]

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • 0 Henk 'm!

  • Gizz
  • Registratie: Maart 2001
  • Laatst online: 19:00

Gizz

Dunder-Mifflin, Inc.

@Toppe Wat mij opvalt is dat jij extra accolades om je variabel hebt staan. Ik heb er maar 2, jij 3. Verder zou je even een debug kunnen doen om te kijken wat er überhaupt uit je template node komt :)

Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX


Acties:
  • 0 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 22:21
@Gizz Het gaat er om dat ik juist die template node er uit wil hebben... Met template node werkt het perfect. Daarbij, die template node stuurt niets anders dan JSON uit. De HA node geeft je de mogelijkheid om JSON data mee te geven, alleen dat werkt dus niet.

Geef ik onderstaande mee als data:
code:
1
{"brightness_pct":"50"}

Dan gaat het licht netjes op 50% branden, alleen werkt het dus met een variable niet. Schiet mij maar lek.

Edit:
code:
1
{"brightness_pct":"{{payload}}"}
haalt ook niets uit

[ Voor 53% gewijzigd door Toppe op 12-06-2020 11:15 ]

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • 0 Henk 'm!

  • Gizz
  • Registratie: Maart 2001
  • Laatst online: 19:00

Gizz

Dunder-Mifflin, Inc.

@Toppe Ik weet verder niets van de HA-node, dus meedenken is dan lastig :) Overigens is het natuurlijk helemaal mooi als je vanuit NR direct WLED aanstuurt, want dan blijft je verlichting ook werken als HA een keer plat ligt. Maar ik begrijp dat de status in HA kunnen zien ook z'n voordelen heeft.

Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX


Acties:
  • +1 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 22:21
Gizz schreef op vrijdag 12 juni 2020 @ 11:30:
@Toppe Ik weet verder niets van de HA-node, dus meedenken is dan lastig :) Overigens is het natuurlijk helemaal mooi als je vanuit NR direct WLED aanstuurt, want dan blijft je verlichting ook werken als HA een keer plat ligt. Maar ik begrijp dat de status in HA kunnen zien ook z'n voordelen heeft.
Het is uiteindelijk gelukt. De HA node kent 2 manieren om de helderheid in te stellen:
code:
1
2
3
4
brightness_pct:Number between 0..100 indicating percentage of full brightness, where 0 turns the light off, 1 is the minimum brightness and 100 is the maximum brightness supported by the light.

brightness:
Number between 0..255 indicating brightness, where 0 turns the light off, 1 is the minimum brightness and 255 is the maximum brightness supported by the light.


Gebruik ik {"brightness_pct":"{{payload}}"} dan krijg ik alleen maar foutmeldingen, maar gebruik ik {"brightness":"{{payload}}"} dan werkt het perfect. En zonder het gebruik van de template node zoals ik graag wou. Nu alleen nog even de twee lux sensors op twee bewegingsmelders weer werkend krijgen en ik ben blij :+

Afbeeldingslocatie: https://tweakers.net/i/AUofDxfzLFdnBW-JfrdOZQrhlOE=/800x/filters:strip_exif()/f/image/DZcxYBJ4W5NKRkb5d6bbTIC2.png?f=fotoalbum_large

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • +1 Henk 'm!

  • rorie
  • Registratie: Maart 2007
  • Laatst online: 16-09 11:44
Harde cijfers werken idd niet, ik heb dit ooit in Arduino als volgt opgelost en jaren plezier van gehad:\
-Elke 30 seconden de luchtvochtigheid meten, als het verschil tussen de huidige meting en de vorige hoger is dan 10% en dit is 3 keer het geval dan schakel ik mijn mechanische ventilatie in op de hoogste stand.
Dit is dus het geval als er iemand onder de douche staat
- Ook sla ik de vorige waarde op bij het inschakelen om te bepalen of we alweer op de oude waarde zitten van toen we nog niet gingen douchen zodat hij ook weer automatisch uit gaat.
Dacuuu schreef op donderdag 11 juni 2020 @ 20:06:
[...]


Ik heb 2 sensors, 1 in de badkamer en 1 in de huiskamer, dan trek ik de vochtigheid van de badkamer af van de huiskamer, als dat verschil groter is dan 15 (even spelen met dit getal naar wens), dan gaat de afzuiging aan.

Op deze manier ben ik verlost van harde cijfers, want de luchtvochtigheid wisselt nog wel is in huis

https://i.imgur.com/wBM08TH.png

Acties:
  • +2 Henk 'm!
Ik wilde eigenlijk eerder aanhaken in de luchtvochtigheid-discussie, maar helaas al dagen te druk met werk. Ik heb het zo opgelost:
Afbeeldingslocatie: https://i.imgur.com/j8SK8nF.png
Ik heb een Xiaomi humidity sensor die via MQTT wordt uitgelezen. Dubbele waardes worden afgevangen door de RBE node (vaak veroorzaakt door meerdere routers in mijn zigbee netwerk).
Vervolgens kijk ik wat de status van de verlichting in de badkamer is. De functienode bepaald welke stand er ingesteld moet worden
De trigger node zorgt ervoor dat elke stand minimaal 2 minuten actief moet zijn, om ping-pong gedrag te voorkomen
Wordt er aan de dimmer gedraaid? -> Iemand in bad, stand vastzetten op laag
Afhankelijk van de stand worden de juiste relais aangestuurd
Zet ik de badkamerlamp uit, dan checkt hij of de afzuiging aanstaat.
Zo ja: stel in op lage stand en schakel uit na 5 minuten
Zo nee, doe niets :+

De functienode
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
let bad = flow.get("badkamer.bad_gebruikt")

if (bad === "ja") {return}

// Draaidimmer gebruikt
if (msg.topic.includes("baddimmer") === true){
    msg.stand = 1;
    flow.set("badkamer.bad_gebruikt","ja");
    node.status({text:"Bad in gebruik"});
    return msg}

// Reguliere wijziging
let old = flow.get("badkamer.humidity");
let current = (msg.payload.humidity).toFixed(1);
let stand_old = context.get("stand_old");

flow.set("badkamer.humidity",current);
node.status({text:"Current: " + current + " , Old: " + old});

if (msg.light == "off"){
    msg.stand = 0 
    if (Math.round(msg.data.timeSinceChangedMs / 60000 < 5 && msg.payload.humidity > 65)){
        msg.stand = 1 }
    context.set("stand_old", msg.stand);
    return msg}

// Stijgend
if (old - current < 0){
    // Meer dan 8% toegenomen?
    if ((current - old) / old * 100 > 8 && msg.payload.humidity >= 70 || msg.payload.humidity > 75){
        msg.stand = 2 }
    else if (msg.payload.humidity >= 65 && msg.payload.humidity <= 75){
        msg.stand = 1 }
    else {
        msg.stand = 0 }
} else {
// Dalend
    if (msg.payload.humidity > 65 && msg.payload.humidity <= 80){
        msg.stand = 1;
    } else if (msg.payload.humidity > 80){
        msg.stand = 2;
    } else {
        msg.stand = 0;
    }
}

context.set("stand_old", msg.stand);

return msg;

[ Voor 3% gewijzigd door lolgast op 17-06-2020 14:28 ]


Acties:
  • +1 Henk 'm!
dubbelpost omdatAfbeeldingslocatie: https://i.imgur.com/KOpZZcs.png

De complete flow:
JSON:
1
[{"id":"a0ee456e.51ea18","type":"mqtt out","z":"65505814.c27b98","name":"Badkamer Ventilator Laag","topic":"shellies/badkamer_ventilator/relay/0/command","qos":"","retain":"false","broker":"a0c390fa.b822a","x":1290,"y":2110,"wires":[]},{"id":"d0d66770.1d4f7","type":"change","z":"65505814.c27b98","name":"payload on","rules":[{"t":"set","p":"payload","pt":"msg","to":"on","tot":"str"},{"t":"set","p":"badkamer_ventilator","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1060,"y":2130,"wires":[["a0ee456e.51ea18"]]},{"id":"c3c1524c.3b0668","type":"change","z":"65505814.c27b98","name":"payload off","rules":[{"t":"set","p":"payload","pt":"msg","to":"off","tot":"str"},{"t":"set","p":"badkamer_ventilator","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1060,"y":2090,"wires":[["a0ee456e.51ea18"]]},{"id":"fa4bf654.a8e82","type":"switch","z":"65505814.c27b98","name":"Stand?","property":"stand","propertyType":"msg","rules":[{"t":"nempty"},{"t":"eq","v":"0","vt":"num"},{"t":"eq","v":"1","vt":"num"},{"t":"eq","v":"2","vt":"num"}],"checkall":"true","repair":false,"outputs":4,"x":880,"y":2150,"wires":[["48308eb4.521378"],["c3c1524c.3b0668","9d5fcda0.684c08"],["9d5fcda0.684c08","d0d66770.1d4f7"],["b9cf637f.2f85f8","d0d66770.1d4f7"]]},{"id":"48308eb4.521378","type":"trigger","z":"65505814.c27b98","op1":"","op2":"","op1type":"pay","op2type":"payl","duration":"2","extend":false,"units":"min","reset":"","bytopic":"all","name":"","x":880,"y":2040,"wires":[["fa4bf654.a8e82"]]},{"id":"9d5fcda0.684c08","type":"change","z":"65505814.c27b98","name":"payload off","rules":[{"t":"set","p":"payload","pt":"msg","to":"off","tot":"str"},{"t":"set","p":"badkamer_ventilator","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1060,"y":2170,"wires":[["643223bc.77eddc"]]},{"id":"b9cf637f.2f85f8","type":"change","z":"65505814.c27b98","name":"payload on","rules":[{"t":"set","p":"payload","pt":"msg","to":"on","tot":"str"},{"t":"set","p":"badkamer_ventilator","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1060,"y":2210,"wires":[["643223bc.77eddc"]]},{"id":"b1bb1b03.53b798","type":"change","z":"65505814.c27b98","name":"msg.stand to 0","rules":[{"t":"set","p":"stand","pt":"msg","to":"0","tot":"num"},{"t":"set","p":"reset","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":680,"y":2090,"wires":[["fa4bf654.a8e82"]]},{"id":"62006406.9e44ac","type":"change","z":"65505814.c27b98","name":"msg.stand to 1","rules":[{"t":"set","p":"stand","pt":"msg","to":"1","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":680,"y":2140,"wires":[["fa4bf654.a8e82"]]},{"id":"413e50d5.ce71","type":"function","z":"65505814.c27b98","name":"Bepaal 'stand'","func":"let bad = flow.get(\"badkamer.bad_gebruikt\")\n\nif (bad === \"ja\") {return}\n\n// Draaidimmer gebruikt\nif (msg.topic.includes(\"baddimmer\") === true){\n    msg.stand = 1;\n    flow.set(\"badkamer.bad_gebruikt\",\"ja\");\n    node.status({text:\"Bad in gebruik\"});\n\treturn msg}\n\n// Reguliere wijziging\nlet old = flow.get(\"badkamer.humidity\");\nlet current = (msg.payload.humidity).toFixed(1);\nlet stand_old = context.get(\"stand_old\");\n\nflow.set(\"badkamer.humidity\",current);\nnode.status({text:\"Current: \" + current + \" , Old: \" + old});\n\nif (msg.light == \"off\"){\n\tmsg.stand = 0 \n\tif (Math.round(msg.data.timeSinceChangedMs / 60000 < 5 && msg.payload.humidity > 65)){\n\t\tmsg.stand = 1 }\n\tcontext.set(\"stand_old\", msg.stand);\n\treturn msg}\n\n// Stijgend\nif (old - current < 0){\n    // Meer dan 8% toegenomen?\n    if ((current - old) / old * 100 > 8 && msg.payload.humidity >= 70 || msg.payload.humidity > 75){\n        msg.stand = 2 }\n    else if (msg.payload.humidity >= 65 && msg.payload.humidity <= 75){\n        msg.stand = 1 }\n    else {\n        msg.stand = 0 }\n} else {\n// Dalend\n    if (msg.payload.humidity > 65 && msg.payload.humidity <= 80){\n        msg.stand = 1;\n    } else if (msg.payload.humidity > 80){\n        msg.stand = 2;\n    } else {\n        msg.stand = 0;\n    }\n}\n\ncontext.set(\"stand_old\", msg.stand);\n\nreturn msg;","outputs":1,"noerr":0,"x":680,"y":2040,"wires":[["48308eb4.521378"]]},{"id":"643223bc.77eddc","type":"mqtt out","z":"65505814.c27b98","name":"Badkamer Ventilator Hoog","topic":"shellies/badkamer_ventilator/relay/1/command","qos":"","retain":"false","broker":"a0c390fa.b822a","x":1290,"y":2190,"wires":[]},{"id":"6c92ea21.64934c","type":"trigger","z":"65505814.c27b98","op1":"","op2":"","op1type":"nul","op2type":"payl","duration":"5","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":500,"y":2090,"wires":[["b1bb1b03.53b798"]]},{"id":"86112f98.c8d43","type":"switch","z":"65505814.c27b98","name":"on?","property":"badkamer_ventilator","propertyType":"flow","rules":[{"t":"eq","v":"on","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":480,"y":2140,"wires":[["62006406.9e44ac"]]},{"id":"ec5b27e2.2c6c48","type":"api-current-state","z":"65505814.c27b98","name":"Badkamerlamp","server":"39fd7a9b.252f86","version":1,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"light.badkamer_lamp_light","state_type":"str","state_location":"light","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":490,"y":2040,"wires":[["413e50d5.ce71"]]},{"id":"553fe3a7.a5a2a4","type":"rbe","z":"65505814.c27b98","name":"","func":"rbei","gap":"","start":"","inout":"out","property":"payload.brightness","x":520,"y":1990,"wires":[["413e50d5.ce71"]]},{"id":"19371844.d8cef","type":"change","z":"65505814.c27b98","name":"Set flow.badgebruik","rules":[{"t":"set","p":"badkamer.bad_gebruikt","pt":"flow","to":"nee","tot":"str"},{"t":"set","p":"payload","pt":"msg","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":2090,"wires":[["6c92ea21.64934c","86112f98.c8d43"]]},{"id":"e4bf7010.f150d8","type":"rbe","z":"65505814.c27b98","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload.humidity","x":320,"y":2040,"wires":[["ec5b27e2.2c6c48"]]},{"id":"4a188027.914b","type":"mqtt in","z":"65505814.c27b98","name":"Badkamer dimmer","topic":"zigbee2mqtt/badkamer_baddimmer","qos":"2","datatype":"json","broker":"a0c390fa.b822a","x":340,"y":1990,"wires":[["553fe3a7.a5a2a4"]]},{"id":"8f3e16d1.76739","type":"server-state-changed","z":"65505814.c27b98","name":"Badkamerlamp","server":"39fd7a9b.252f86","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"light.badkamer_lamp_light","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"off","halt_if_type":"str","halt_if_compare":"is","outputs":2,"output_only_on_state_change":true,"x":120,"y":2090,"wires":[["19371844.d8cef"],[]]},{"id":"1573fc8b.f5af93","type":"mqtt-json","z":"65505814.c27b98","name":"Badkamer Luchtmeter","topic":"zigbee2mqtt/badkamer_airquality","property":"","qos":"0","broker":"a0c390fa.b822a","x":140,"y":2040,"wires":[["e4bf7010.f150d8"]]},{"id":"a735519b.155b9","type":"comment","z":"65505814.c27b98","name":"Badkamer Ventilator","info":"","x":110,"y":2000,"wires":[]},{"id":"a0c390fa.b822a","type":"mqtt-broker","z":"","name":"MQTT","broker":"192.168.4.50","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"30","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"39fd7a9b.252f86","type":"server","z":"","name":"Home Assistant","legacy":false,"rejectUnauthorizedCerts":true}]

Acties:
  • 0 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 22:21
Ik heb een flow gemaakt die het verbruik van de wasmachine bijhoudt.

Deze kijkt of het verbruik lager is dan 3 watt en stuurt dan een signaal naar Telegram dat hij klaar is. Nu werkt dit (nog) niet optimaal omdat ik het zelfde bericht nog een keer krijg als het verbruik wijzigt. Na een x aantal minuten schakelt de machine zich helemaal uit (0 watt) en krijg ik dus het bericht nog een keer.

Ik gebruik de "Events: State" voor HA en die heeft (blijkbaar) geen between mogelijkheid.

Iemand die mij een zetje in de juiste richting kan geven om te zorgen dat zodra het verbruik lager is dan 3 watt hij éénmalig een berichtje stuurt, hoevaak de machine ook wisselt tussen 0, 1 of 2 watt?

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • +4 Henk 'm!

  • Gizz
  • Registratie: Maart 2001
  • Laatst online: 19:00

Gizz

Dunder-Mifflin, Inc.

@Toppe Ik gebruik voor mijn wasmachine (en 3d-printer) power-monitor. Daarbij kun je makkelijk instellen hoeveel metingen hij dient te ontvangen voordat iets als 'aan' wordt gekenmerkt en hoeveel metingen voor 'uit'. Daarmee voorkom je dat als hij even een enkele hoge meting heeft en daarna zakt je meteen weer een melding krijgt dat de was klaar is.

Zo heb ik bij mijn wasmachine ingesteld dat als hij 10 metingen achter elkaar 1W of minder verbruikt, dat dan pas het berichtje wordt gestuurd dat de was klaar is. In jouw geval zet je dan de waarde op 3W (of zelfs nog wat hoger).

Hierbij de flow, waarbij ik even de nodes met telegram chatIDs en zo heb verwijderd ;)
code:
1
[{"id":"38c933d1.2fa4bc","type":"mqtt in","z":"d2f9a98d.059ef","name":"","topic":"sonoffbadkamer/Meten/Power","qos":"2","datatype":"auto","broker":"c9b2091b.ca27b8","x":280,"y":220,"wires":[["6fad9e23.996a98"]]},{"id":"2b925620.446d82","type":"change","z":"d2f9a98d.059ef","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"payload.content","tot":"msg"},{"t":"set","p":"payload.type","pt":"msg","to":"message","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":240,"wires":[[]]},{"id":"6fad9e23.996a98","type":"power-monitor","z":"d2f9a98d.059ef","name":"","threshold":"1","startafter":1,"stopafter":"10","x":500,"y":220,"wires":[["d2dff4a0.ba1218"],["30a55bb5.d2264c"]]},{"id":"8dc7e25f.e52a1","type":"template","z":"d2f9a98d.059ef","name":"Klaar","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Clean clothes alert! The laundry is finished. It took {{payload.energy}}kWh of energy and {{payload.minutes}} minutes.","output":"str","x":670,"y":280,"wires":[["2b925620.446d82"]]},{"id":"30a55bb5.d2264c","type":"function","z":"d2f9a98d.059ef","name":"seconds to minutes","func":"msg.payload.minutes = Math.round(msg.payload.time / 60) ;\nreturn msg;","outputs":1,"noerr":0,"x":510,"y":280,"wires":[["8dc7e25f.e52a1"]]},{"id":"d2dff4a0.ba1218","type":"template","z":"d2f9a98d.059ef","name":"Start","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Laundry started! :)","output":"str","x":670,"y":200,"wires":[["2b925620.446d82"]]},{"id":"c9b2091b.ca27b8","type":"mqtt-broker","z":"","name":"","broker":"192.168.1.2","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"15","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]


Mocht je geen behoefte hebben aan het instellen van het benodigde aantal berichtjes of het meten van het verbruik, dan kun je ook met hysteresis aan de slag.

[ Voor 5% gewijzigd door Gizz op 14-06-2020 14:04 ]

Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX


Acties:
  • +1 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 22:21
@Gizz wat heb jij een geduld zeg :+

Hysteresis wat in eerst instantie wat ik zocht, echter eerst aan de slag gegaan met power-monitor en dat werkt toch echt wel fantastisch.

Ik luister nu gewoon de MQTT berichten vanaf de Sonoff aan HA af en filter "Power" er uit en stuur die door. Werkt echt perfect!

Dit is zoals ik hem nu heb, nogmaals dank!
Afbeeldingslocatie: https://tweakers.net/i/Pm1F7nugcRJZZTbE7fRDM9zd9pE=/800x/filters:strip_exif()/f/image/R3VPj1SlfZ3xic4l4fR6y7Qy.png?f=fotoalbum_large

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • 0 Henk 'm!

  • mgizmo
  • Registratie: Januari 2009
  • Laatst online: 21:06
Nieuwe gebruiker van Node-Red hier. Ik ben de afgelopen jaren Loxone gewend, om even een beeld te geven.
Loxone werkt ook met soort van flows, maar werkt op basis van PLC logica. Daarentegen werkt Node-red volgens mij met triggers.

Ik heb de neiging mijn eigen variabelen te willen definiëren en die variabelen weer te gebruiken ipv de input objecten zoals fysieke schakelaars/sensors/e.d. Nu heb ik hierover al een vraag:
- Als ik een input (van in dit geval een Shelly 1pm) controleer of deze een bepaalde waarde teruggeeft, dat indien dit het geval is, in een variabele = on set, en anders off. Hoe kan ik op basis van deze variabele change (dus van off naar on) een andere flow starten? De flows die ik hier zo even terug zie worden gestart door een object, zoals externe sensors.

Acties:
  • 0 Henk 'm!

  • z1rconium
  • Registratie: Augustus 2014
  • Laatst online: 17-09 11:26
mgizmo schreef op maandag 15 juni 2020 @ 23:04:
- Als ik een input (van in dit geval een Shelly 1pm) controleer
node-RED is in de basis event based dmv messages. De messages hebben een "lifetime" en die lifetime is zo langs als de flow (uiteraard zijn variabelen hier in ook mogelijk)

Maar je "controleert" niet, maar de shelly geeft een waarde af en daar ga je iets mee doen. Voor gebruik met een shelly is mqtt het makkelijkst.

Ik zou deze hele playlist willen aanraden (18 korte videos), deze raakt alle aspecten van node-red.


Acties:
  • 0 Henk 'm!

  • mgizmo
  • Registratie: Januari 2009
  • Laatst online: 21:06
z1rconium schreef op dinsdag 16 juni 2020 @ 08:08:
[...]


node-RED is in de basis event based dmv messages. De messages hebben een "lifetime" en die lifetime is zo langs als de flow (uiteraard zijn variabelen hier in ook mogelijk)

Maar je "controleert" niet, maar de shelly geeft een waarde af en daar ga je iets mee doen. Voor gebruik met een shelly is mqtt het makkelijkst.

Ik zou deze hele playlist willen aanraden (18 korte videos), deze raakt alle aspecten van node-red.

[YouTube: Introduction - Node-RED Essentials]
Dank je, ik ga ze allemaal bekijken. Terugkomend op "controleert", ik doelde controleren met een "if" statement van de waarde die binnenkomt. Zoals bijv als de stroomverbruik van de shelly (die gekoppeld is aan MQTT inderdaad) groter is dan 10W, dan moet een variabele "buitenverlichting=on" geset worden.
In een andere flow wil ik dan starten met "indien buitenverlichiting verandert in on, dan..."

Acties:
  • 0 Henk 'm!
@mgizmo Ook ik raad je aan eerst wat basis video's te bekijken. Dat wat je nu vraagt kan uiteraard, anders zou de software in mijn ogen geen bestaansrecht hebben. En neem het topic ook even vanaf het begin door, daar staan zo ontzettend veel flows in als voorbeeld. Je zou kunnen filteren op posts met afbeelding, dan wordt het wat duidelijker dan alleen tekst

Zie bijvoorbeeld deze post van mij. Dat lijkt uitgebreid, maar is in de basis in mijn ogen vrij eenvoudig te maken. Wat ook meteen de kracht van NR is :)
lolgast in "Node-RED - grafisch 'programmeren' (bijv. voor domotica)"

Acties:
  • 0 Henk 'm!

  • mgizmo
  • Registratie: Januari 2009
  • Laatst online: 21:06
lolgast schreef op dinsdag 16 juni 2020 @ 09:05:
@mgizmo Ook ik raad je aan eerst wat basis video's te bekijken. Dat wat je nu vraagt kan uiteraard, anders zou de software in mijn ogen geen bestaansrecht hebben. En neem het topic ook even vanaf het begin door, daar staan zo ontzettend veel flows in als voorbeeld. Je zou kunnen filteren op posts met afbeelding, dan wordt het wat duidelijker dan alleen tekst

Zie bijvoorbeeld deze post van mij. Dat lijkt uitgebreid, maar is in de basis in mijn ogen vrij eenvoudig te maken. Wat ook meteen de kracht van NR is :)
lolgast in "Node-RED - grafisch 'programmeren' (bijv. voor domotica)"
Ja jullie hebben gelijk. Ik werd alleen ongeduldig. Soms moet je je eigen gebruik even negeren en gewoon vragen :D Je voorbeeld geeft overigens mij niet in de indruk dat je een flow start op basis van een wijziging van de waarde van een variabele. Ik zie twee die gestart wordt door een externe input (mqtt) en één op een vast tijdstip.

Acties:
  • 0 Henk 'm!
@mgizmo Dat kan ook niet. Maar daar kun je toch hetzelfde MQTT bericht met voorwaarde voor gebruiken :?

Andere mogelijkheid is het gebruik van 'Link-nodes' Die staan ook in mijn voorbeeld, de kleine grijze vierkantjes.. Die verplaatsen de actie naar een andere flow, waardoor je meerdere flows aan elkaar kunt verbinden zonder dat ze direct onder elkaar moeten staan.
Simpel voorbeeld: YouTube: Node-Red : Using Link Node in Windows
Dat kan ook nog een ander tabblad in NR zijn, dus behoorlijk flexibel in mijn ogen.

[ Voor 7% gewijzigd door lolgast op 16-06-2020 09:43 ]


Acties:
  • +1 Henk 'm!

  • Gizz
  • Registratie: Maart 2001
  • Laatst online: 19:00

Gizz

Dunder-Mifflin, Inc.

Toppe schreef op zondag 14 juni 2020 @ 20:11:
@Gizz wat heb jij een geduld zeg :+
Ik vind het leuk om anderen verder te helpen, ik werk niet voor niets in het onderwijs :P
Dit is zoals ik hem nu heb, nogmaals dank!
[Afbeelding]
Meteen weer een tip omdat je, net als ik, houdt van zo min mogelijk nodes:
Afbeeldingslocatie: https://tweakers.net/i/THHhvB0dUAYKnU0IZr3BUktbXRQ=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/rvKtmmRedWwEJBjFcMuDOjAQ.png?f=user_large
Als je in de MQTT-node de output instelt op a parsed JSON object kun je de JSON-conversie nodes die je nu gebruikt verwijderen, want de output is dan al meteen JSON.

Voor een voorbeeld: zie mijn wasmachine flow van een paar posts terug.

[ Voor 4% gewijzigd door Gizz op 16-06-2020 09:58 ]

Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX


Acties:
  • 0 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 22:21
Gizz schreef op dinsdag 16 juni 2020 @ 09:56:
[...]

Ik vind het leuk om anderen verder te helpen, ik werk niet voor niets in het onderwijs :P


[...]

Meteen weer een tip omdat je, net als ik, houdt van zo min mogelijk nodes:
[Afbeelding]
Als je in de MQTT-node de output instelt op a parsed JSON object kun je de JSON-conversie nodes die je nu gebruikt verwijderen, want de output is dan al meteen JSON.

Voor een voorbeeld: zie mijn wasmachine flow van een paar posts terug.
De JSON node zou weg kunnen inderdaad, alleen blijft die functie nog wel zitten aangezien de payload de volledige data is die Tasmota verstrekt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
    "Time": "2020-06-16T09:32:50",
    "ENERGY": {
        "TotalStartTime": "2020-02-05T18:41:58",
        "Total": 383.394,
        "Yesterday": 1.323,
        "Today": 0.000,
        "Period": 0,
        "Power": 0,
        "ApparentPower": 0,
        "ReactivePower": 0,
        "Factor": 0.00,
        "Voltage": 239,
        "Current": 0.000
    }
}


De functie node doet niet anders dan onderstaand en volgens mij krijg je dit niet in je MQTT node voor elkaar?
code:
1
2
msg.payload = msg.payload.ENERGY.Power
return msg


Ondertussen wel lekker bezig met Node-Red en de airco :+. Wellicht ook de Telegram node als link gaat instellen zodat ik maar één keer deze node hoef toe te passen. Het oog wil tenslotte ook wat :)
Afbeeldingslocatie: https://tweakers.net/i/43W2rXHqWl_mXhXH-kXbKEoUTGI=/800x/filters:strip_exif()/f/image/9RYpHNpDkV6wHAS2deKHNDOb.png?f=fotoalbum_large

[ Voor 15% gewijzigd door Toppe op 16-06-2020 10:39 ]

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • +1 Henk 'm!

  • z1rconium
  • Registratie: Augustus 2014
  • Laatst online: 17-09 11:26
mgizmo schreef op dinsdag 16 juni 2020 @ 09:02:
[...]


Dank je, ik ga ze allemaal bekijken. Terugkomend op "controleert", ik doelde controleren met een "if" statement van de waarde die binnenkomt. Zoals bijv als de stroomverbruik van de shelly (die gekoppeld is aan MQTT inderdaad) groter is dan 10W, dan moet een variabele "buitenverlichting=on" geset worden.
In een andere flow wil ik dan starten met "indien buitenverlichiting verandert in on, dan..."
Dit is vrij simpel te doen op meerdere manieren.

Ja het kan met variabelen, maar een “nadeel” binnen node-red is dat er geen “On change event listener” is voor variabelen, dus dan zou je een inject node kunnen gebruiken die je iedere seconde de waarde van je variabele laat afvuren.

Maar een nettere oplossing zijn link nodes, je stuurt de waarde via een link out node in en in je andere flow komt de waarde er via een link-in in en dan kun je met een switch node makkelijk if waarde groter/kleiner dan doen en zo de message door de flow heen routeren.

Acties:
  • +1 Henk 'm!

  • Gizz
  • Registratie: Maart 2001
  • Laatst online: 19:00

Gizz

Dunder-Mifflin, Inc.

Toppe schreef op dinsdag 16 juni 2020 @ 10:34:
[...]
De JSON node zou weg kunnen inderdaad, alleen blijft die functie nog wel zitten aangezien de payload de volledige data is die Tasmota verstrekt:
Ja dat klopt, helaas ontkom je niet aan die node. Overigens kun je in plaats van de function node ook de change node gebruiken, maar het eindresultaat is hetzelfde :)

Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX


Acties:
  • 0 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 22:21
Gizz schreef op dinsdag 16 juni 2020 @ 11:32:
[...]

Ja dat klopt, helaas ontkom je niet aan die node. Overigens kun je in plaats van de function node ook de change node gebruiken, maar het eindresultaat is hetzelfde :)
Change node is wel netter hé? Vanavond maar eens kijken :)

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • 0 Henk 'm!

  • Mich
  • Registratie: December 2000
  • Laatst online: 22:19
Even een klein vraagje. Kan ik een flow variabele ook declareren in een switch node op deze manier?

Afbeeldingslocatie: https://tweakers.net/i/DWynBylFlf1-DDLtPKauhyxWm2k=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/iIFYesDi1eazRaT5xdgOUwlt.png?f=user_large

Ik lees deze dan ergens in een functie op deze manier uit:

code:
1
var woonkamer_status = flow.get('woonkamer_status') || "off"


Ik krijg het niet voor elkaar, maar misschien kan het ook niet. Mocht het niet kunnen gebruik ik wel een function node...

[ Voor 14% gewijzigd door Mich op 22-06-2020 15:19 ]


Acties:
  • +1 Henk 'm!
@Mich Hij moet andersom
Afbeeldingslocatie: https://i.imgur.com/dCqZCXl.png

Dit zegt:
De waarde flow.badkamer_ventilator moet gebaseerd worden op de waarde van msg.payload

Acties:
  • 0 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 22:21
Omdat we alleen maar kunnen leren:

Vorige airco flow werkte niet helemaal lekker zoals ik wou dus opnieuw begonnen. Ondanks dat ik wel tevreden ben ben ik toch benieuwd of andere mensen (jullie :+ ) dit anders hadden aangepakt:
Afbeeldingslocatie: https://tweakers.net/i/X8UZLQPUCW3czMq-GE1TMMssI1Y=/800x/filters:strip_exif()/f/image/ent8ZjncKZIpXQAC60uOW2o8.png?f=fotoalbum_large

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • 0 Henk 'm!

  • Mich
  • Registratie: December 2000
  • Laatst online: 22:19
lolgast schreef op maandag 22 juni 2020 @ 15:20:
@Mich Hij moet andersom
[Afbeelding]

Dit zegt:
De waarde flow.badkamer_ventilator moet gebaseerd worden op de waarde van msg.payload
Thanks. Dat werkt idd.

Ik had het nou eenmaal andersom in mijn gedachten en was daar stellig van overtuigd :9

Acties:
  • 0 Henk 'm!
Je wilt niet weten hoe vaak ik dat verkeerd om heb gedaan :/ Ik moet er nog bij nadenken af en toe

@Toppe Het eerste wat ik denk: dat ziet er complexer uit dan nodig zou moeten zijn :?

[ Voor 31% gewijzigd door lolgast op 26-06-2020 21:32 ]


Acties:
  • 0 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 22:21
@lolgast het wordt nogal onoverzichtelijk door de onderlinge links die gelegd worden. Zo Uber complex is hij niet denk ik. De schakeling rechts onder (stukje van de temperaturen) had iets eenvoudiger gekund als ik gebruik kon maken van ‘between’.

Het gebruik van de hoeveelheid nodes voor swing en preset kan niet anders aangezien het 2 verschillende stukjes code zijn.

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • 0 Henk 'm!
Hier komt 20 juli een airco op het dak die ik tegelijkertijd wil voorzien van een Tado Smart AC (ik heb 0 vertrouwen in de apps van Fujitsu/Daikin/wie-dan-ook-die-aircos-maakt). Als dat in de lucht is ga ik ook met NR aan de slag. Eens kijken waar ik op uit ga komen :9

Acties:
  • +1 Henk 'm!

  • z1rconium
  • Registratie: Augustus 2014
  • Laatst online: 17-09 11:26
Toppe schreef op vrijdag 26 juni 2020 @ 13:40:
Omdat we alleen maar kunnen leren:

Vorige airco flow werkte niet helemaal lekker zoals ik wou dus opnieuw begonnen. Ondanks dat ik wel tevreden ben ben ik toch benieuwd of andere mensen (jullie :+ ) dit anders hadden aangepakt:
[Afbeelding]
Heel eerlijk ?

Het gebruik van link nodes gaat niet helemaal lekker zo. Een link node is niets meer dan een pijplijn waar je data in stuurt. Je hebt er 5 linksonder, waarom ? Dat kan terug naar een enkele link node, gezien ze allemaal de time range node in gaan.

De home assistant nodes (ik gebruik geen home assistant), kun je die "presets" niet dynamisch populaten dmv input payload ? Dan kan dat terug naar 1 node.

"Status airco" zou ik in een flow variable zetten, dan hoef je het niet steeds op te vragen.
Zelfde voor temperatuur hoger/lager, je hebt de temperatuur al, zet het in een variable.

Voor de rest is de flow redelijk on"lees"baar

Acties:
  • 0 Henk 'm!
@z1rconium Dat kan zeker met HA nodes
Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/93b92d6ab099b38f6594d5a1de0dec42.png
De andere velden zijn ook als variabele op te geven.

Nog een voorbeeldje in deze afbeelding is de mogelijkheid om alle entiteiten van 1 group op te halen (plants) en die later te splitten. Dat doet exact hetzelfde als de met de hand opgesplitste climate nodes, maar dan netter en leesbaarder.

@Toppe Net als @z1rconium ben ik van mening dat het wel wat netter + leesbaarder (en daarmee ook meteen onderhoudsvriendelijker) kan.

Acties:
  • 0 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 22:21
@lolgast @z1rconium Sommige nodes (Mode en swing) worden meerdere keren gebruikt.Wat zou daar de oplossing voor zijn dan? Nu kan ik bij een wijziging één node aanpassen. Om elke node meerdere keren te kopiëren en plakken wordt het ook niet overzichtelijker op.

Het gebruik van een variable is wel een ding ja, bij de temperatuur node links boven kan ik dan gewoon een variable maken zodat ik die in de rest van de flow kan gebruiken dus dat ga ik aankomend weekend doen.

Het combineren van 2 services in één HA node is volgens mij nog niet mogelijk, want dat was wel het mooiste geweest om te doen.

@lolgast Het versturen van 5 link nodes komt door de de verschillende triggers (Bij inschakelen airco, om 20:30, om 09:00, bij de goodnight scene en bij elke temperatuur wijziging) en het daar bij horende traject wat gevolgd wordt. Als ik dit anders zou willen doen dan zou ik eerder een inject moeten doen met een trigger elke minuut of zo

Gister middag de airco wel uitgezet en gekeken wat de flow gaat doen en het doet exact wat ik wil, de werking is dus wel goed ;)

[ Voor 6% gewijzigd door Toppe op 27-06-2020 09:11 ]

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • +2 Henk 'm!

  • z1rconium
  • Registratie: Augustus 2014
  • Laatst online: 17-09 11:26
Toppe schreef op zaterdag 27 juni 2020 @ 09:08:
@lolgast @z1rconium Sommige nodes (Mode en swing) worden meerdere keren gebruikt.Wat zou daar de oplossing voor zijn dan? Nu kan ik bij een wijziging één node aanpassen. Om elke node meerdere keren te kopiëren en plakken wordt het ook niet overzichtelijker op.
Zoals @lolgast laat zien kun je dynamische data gebruiken voor de velden, dus uiteindelijk heb je maar 1 call-service node nodig die je de juiste data geeft. (wat die data is weet ik niet, gezien ik niet weet hoe home-assistant werkt).

Afbeeldingslocatie: https://tweakers.net/i/G6wLFYTyILgX7XR10xmiQ4JUW0o=/800x/filters:strip_icc():strip_exif()/f/image/ASVPCIqdeEHVPj4DZPPEjbNJ.jpg?f=fotoalbum_large
@lolgast Het versturen van 5 link nodes komt door de de verschillende triggers (Bij inschakelen airco, om 20:30, om 09:00, bij de goodnight scene en bij elke temperatuur wijziging) en het daar bij horende traject wat gevolgd wordt. Als ik dit anders zou willen doen dan zou ik eerder een inject moeten doen met een trigger elke minuut of zo
Zoals gezegd; een link node is een pijplijn waar je alles doorheen kan sturen. Als naar een enkele output node wilt sturen (zoals de time range in dit geval) heb je maar 1 link-in/out node nodig waar je alles doorheen stuurt:
Afbeeldingslocatie: https://tweakers.net/i/Gnpsdtb1bU6m6hv4AITDLHxg8aQ=/800x/filters:strip_icc():strip_exif()/f/image/icitBSr1pcE9pyJJB6NZNXyW.jpg?f=fotoalbum_large

[ Voor 18% gewijzigd door z1rconium op 27-06-2020 09:34 ]


Acties:
  • 0 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 22:21
z1rconium schreef op zaterdag 27 juni 2020 @ 09:33:
[...]

Zoals @lolgast laat zien kun je dynamische data gebruiken voor de velden, dus uiteindelijk heb je maar 1 call-service node nodig die je de juiste data geeft. (wat die data is weet ik niet, gezien ik niet weet hoe home-assistant werkt).

[Afbeelding]

[...]


Zoals gezegd; een link node is een pijplijn waar je alles doorheen kan sturen. Als naar een enkele output node wilt sturen (zoals de time range in dit geval) heb je maar 1 link-in/out node nodig waar je alles doorheen stuurt:
[Afbeelding]
Tuurlijk! Duh, ik doe het wel aan het einde maar niet in het begin... komt vast door de warmte :+

Edit: Aangepast :)
Afbeeldingslocatie: https://tweakers.net/i/h1r0ehEdhk99bxCZ4T9y0nzOaCE=/800x/filters:strip_exif()/f/image/xBYhDrAHFVUvydIoQDsNuzMy.png?f=fotoalbum_large

[ Voor 13% gewijzigd door Toppe op 27-06-2020 11:31 ]

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • +7 Henk 'm!

  • z1rconium
  • Registratie: Augustus 2014
  • Laatst online: 17-09 11:26
Node-RED 1.1 released, nieuwe handige opties :)

https://nodered.org/blog/2020/06/30/version-1-1-released

[ Voor 30% gewijzigd door z1rconium op 01-07-2020 06:48 ]


Acties:
  • 0 Henk 'm!

  • bako68
  • Registratie: December 2010
  • Laatst online: 20-02 14:24
Hallo Dirk, ik las op het forum dat het je gelukt is om de homewizzard uit te lezen met node red. Zou ik dat script van je mogen krijgen of kan je me op weg helpen hoe ik het zelf maak? Alvast hartelijk dank voor je hulp!

Acties:
  • +2 Henk 'm!

  • Kaspers
  • Registratie: Juni 2004
  • Laatst online: 18-09 22:31
Werkt best mooi, die nieuwe grouping functionaliteit. Wordt t wat overzichtelijker allemaal:

Afbeeldingslocatie: https://tweakers.net/i/xoEabygPHaEJTHbHTYCoafcLOuE=/800x/filters:strip_exif()/f/image/52be0ity8LENQISt3rChyziI.png?f=fotoalbum_large

Afbeeldingslocatie: https://tweakers.net/i/L9cEJrNup3I682uk_Fy8pUcqUX0=/800x/filters:strip_exif()/f/image/VbU476q0L7RHsE6q4OJMTF56.png?f=fotoalbum_large

Handige keybindings:
ctrl+shift+g: nieuwe groep (selecteer eerst de nodes)
ctrl+shift+c: copy style
ctrl+shift+v: paste style

Acties:
  • +4 Henk 'm!

  • z1rconium
  • Registratie: Augustus 2014
  • Laatst online: 17-09 11:26
Kaspers schreef op zaterdag 4 juli 2020 @ 16:10:
Werkt best mooi, die nieuwe grouping functionaliteit. Wordt t wat overzichtelijker allemaal:
Ziet er netjes uit :)

Voor de creatievelingen :+

Afbeeldingslocatie: https://pbs.twimg.com/media/EUddTpwXsAMi7B4?format=png&name=4096x4096

Acties:
  • 0 Henk 'm!

  • Raider095
  • Registratie: November 2014
  • Laatst online: 02-11-2021

Acties:
  • 0 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 22:21
Ondertussen blijf ik hobby'n met Node-Red. Op dit moment ben ik bezig met een 'notifyer' voor Home-Assistant. Op het moment dat een apparaat de status "unavailable" krijgt wil ik een melding krijgen.

Afbeeldingslocatie: https://tweakers.net/i/kRiQ0svjQMkBgVwqJa1JOtQjQNA=/800x/filters:strip_exif()/f/image/dSH0QxVvrHuVF2kUX4sgjfij.png?f=fotoalbum_large

Bij "Bepaal apparaat type" maak ik gebruik van regex \b(\w*light.\w*)\b om te kijken welke type apparaat het is (light, sensor, media_player). Dit werkt allemaal prima, echter wil ik ook een lijstje kunnen maken met apparaten die genegeerd moeten worden (zoals media_player.tv). Voor één enkel apparaat kan je hiervoor best een switch node inzetten. Maar ik wil natuurlijk maar één output.

Hoe zouden jullie dit aanpakken? Gezien mijn kennis van regex kies is liever niet voor die weg ;)

[ Voor 7% gewijzigd door Toppe op 05-07-2020 15:50 ]

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • +1 Henk 'm!

  • z1rconium
  • Registratie: Augustus 2014
  • Laatst online: 17-09 11:26
@Toppe waarom moet dat met regex ? Hoe ziet de input payload er uit ?

Je kunt meerdere woorden afvangen (ook met regex) dmv

code:
1
(woord1|woord2)


maar gezien je daarna met een functie node aan de gang gaat en die daarna weer gaat combineren, lijkt het er op dat je van die switch+join node een enkele functie node kunt maken, maar dit ligt geheel aan de input payload, heb je daar een voorbeeld van ?

Acties:
  • 0 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 22:21
z1rconium schreef op zondag 5 juli 2020 @ 17:57:
@Toppe waarom moet dat met regex ? Hoe ziet de input payload er uit ?

Je kunt meerdere woorden afvangen (ook met regex) dmv

code:
1
(woord1|woord2)


maar gezien je daarna met een functie node aan de gang gaat en die daarna weer gaat combineren, lijkt het er op dat je van die switch+join node een enkele functie node kunt maken, maar dit ligt geheel aan de input payload, heb je daar een voorbeeld van ?
Moet ik vanmiddag even kijken, als ik hem nu op debug zet dan schiet hij meteen vol :+

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • 0 Henk 'm!
@Toppe Het is mijn niet helemaal duidelijk wat je wilt bereiken. Je wilt per groep devices alle devices individueel beoordelen?
Of wil je binnen de group 'light.' niet alle devices beoordelen?

[ Voor 20% gewijzigd door lolgast op 06-07-2020 10:17 ]


Acties:
  • 0 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 22:21
lolgast schreef op maandag 6 juli 2020 @ 10:16:
@Toppe Het is mijn niet helemaal duidelijk wat je wilt bereiken. Je wilt per groep devices alle devices individueel beoordelen?
Of wil je binnen de group 'light.' niet alle devices beoordelen?
Ja. Alle apparaten die de nieuwe status unavailable hebben wil ik beoordelen of ze wel of niet terecht zijn en de mogelijkheid hebben om bepaalde apparaten uit te sluiten.

@z1rconium De input bevat geen verwijzing naar het type apparaat. Alleen naar de entity zelf (dus light.badkamer, media_player.tv) waardoor ik met een regex moet kijken wat voor apparaat het is.

Als regex de makkelijkste manier is dan is dit prima, echter vraag ik me dan wel af hoe ik dit moet toepassen, gebruik nooit regex. Dit is mijn regex nu:
code:
1
\b(\w*sensor.\w*)\b

Maar hoe zorg ik er voor dan dat hij woorden uitsluit?

[ Voor 15% gewijzigd door Toppe op 06-07-2020 11:38 ]

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • 0 Henk 'm!

  • z1rconium
  • Registratie: Augustus 2014
  • Laatst online: 17-09 11:26
Kun je je flow posten ? En dan ipv de ha node een inject node met de json die normaal uit de ha node komt (om de boel te reproduceren)

Acties:
  • 0 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 22:21
z1rconium schreef op maandag 6 juli 2020 @ 11:47:
Kun je je flow posten ? En dan ipv de ha node een inject node met de json die normaal uit de ha node komt (om de boel te reproduceren)
Yes. Moet even wachten tot ik wat data binnen krijg, vrouwlief moet meer bewegen thuis :+

Dit is de JSON data:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{
    "event_type": "state_changed",
    "topic": "state_changed",
    "payload": {
        "event_type": "state_changed",
        "entity_id": "light.led_strip",
        "event": {
            "entity_id": "light.led_strip",
            "old_state": {
                "entity_id": "light.led_strip",
                "state": "off",
                "attributes": {
                    "friendly_name": "LED Strip",
                    "supported_features": 33
                },
                "last_changed": "2020-07-06T08:02:48.621759+00:00",
                "last_updated": "2020-07-06T08:02:48.621759+00:00",
                "context": {
                    "id": "42f5b28c1390415aa0b7d3d922c517eb",
                    "parent_id": null,
                    "user_id": "3822c99d69944d2f9c317a20a1ec467c"
                }
            },
            "new_state": {
                "entity_id": "light.led_strip",
                "state": "on",
                "attributes": {
                    "brightness": 111,
                    "friendly_name": "LED Strip",
                    "supported_features": 33
                },
                "last_changed": "2020-07-06T09:57:06.355826+00:00",
                "last_updated": "2020-07-06T09:57:06.355826+00:00",
                "context": {
                    "id": "e18bf7124fd7432aa8e12594b06f5161",
                    "parent_id": null,
                    "user_id": null
                }
            }
        }
    },
    "_msgid": "50494108.2b016"
}


Dit is de flow zelf:
code:
1
[{"id":"eb260574.cd2b08","type":"switch","z":"58e65141.e7ed7","name":"Entitie niet beschikbaar","property":"payload.event.new_state.state","propertyType":"msg","rules":[{"t":"eq","v":"unavailable","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":270,"y":640,"wires":[["784c3222.2bf3bc"]]},{"id":"4bc5d472.e69d2c","type":"function","z":"58e65141.e7ed7","name":"Creeer Telegram","func":"msg.payload = {\n    chatId : -,\n    type : 'message',\n    content : '*Apparaat onbereikbaar!*\\r\\n'+msg.payload+''\n}\nmsg.payload.options = {parse_mode : \"Markdown\"};\nreturn msg;","outputs":1,"noerr":9,"initialize":"","finalize":"","x":1150,"y":640,"wires":[[]]},{"id":"784c3222.2bf3bc","type":"switch","z":"58e65141.e7ed7","name":"Bepaal apparaat type","property":"payload.entity_id","propertyType":"msg","rules":[{"t":"regex","v":"\\b(\\w*light.\\w*)\\b","vt":"str","case":false},{"t":"regex","v":"\\b(\\w*sensor.\\w*)\\b","vt":"str","case":false},{"t":"regex","v":"\\b(\\w*media_player\\w*)\\b","vt":"str","case":false}],"checkall":"true","repair":false,"outputs":3,"x":500,"y":640,"wires":[["5d7cd9e7.7b636"],["93c02173.dfa618"],["45523623.881798"]]},{"id":"93c02173.dfa618","type":"function","z":"58e65141.e7ed7","name":"Bericht per entitie","func":"msg.payload = 'Sensor \\''+ msg.payload.event.new_state.attributes.friendly_name +'\\' is onbereikbaar!'\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","x":710,"y":640,"wires":[["639e441b.7c7da4"]]},{"id":"5d7cd9e7.7b636","type":"function","z":"58e65141.e7ed7","name":"Bericht per entitie","func":"msg.payload = 'Verlichting \\''+ msg.payload.event.new_state.attributes.friendly_name +'\\' is onbereikbaar!'\nreturn msg\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":710,"y":600,"wires":[["639e441b.7c7da4"]]},{"id":"45523623.881798","type":"function","z":"58e65141.e7ed7","name":"Bericht per entitie","func":"msg.payload = 'Mediaspeler \\''+ msg.payload.event.new_state.attributes.friendly_name +'\\' is onbereikbaar!'\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","x":710,"y":680,"wires":[["639e441b.7c7da4"]]},{"id":"639e441b.7c7da4","type":"join","z":"58e65141.e7ed7","name":"Voeg berichten samen","mode":"custom","build":"string","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"5","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":920,"y":640,"wires":[["4bc5d472.e69d2c"]]},{"id":"88e33d95.aec0a","type":"inject","z":"58e65141.e7ed7","name":"","props":[],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":70,"y":640,"wires":[["eb260574.cd2b08"]]}]

[ Voor 85% gewijzigd door Toppe op 06-07-2020 11:58 ]

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • 0 Henk 'm!

  • z1rconium
  • Registratie: Augustus 2014
  • Laatst online: 17-09 11:26
@Toppe je krijgt maar 1 bericht binnen ?

Acties:
  • 0 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 22:21
@z1rconium Nee, maar de opbouw van alle berichten is het zelfde. Maar krijg wel 5 berichten per seconde binnen omdat ook de DSMR metingen worden doorgegeven etc. Daarom zou het prettig zijn om bepaalde sensoren direct af te vangen.

[ Voor 55% gewijzigd door Toppe op 06-07-2020 18:44 ]

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • +1 Henk 'm!
@Toppe Ik zou graag met je meedenken, maar ik krijg nog steeds niet bedacht wat je opgelost wilt hebben. Ik snap dat je bijvoorbeeld group. en device_tracker. devices weg wil filter. Maar stel je wilt wel zaken van de light. devices controleren. Wil je dan álle devices binnen die groep controleren of kan het zijn dat daarbinnen ook nog devices ge-exclude moeten worden?

In dat eerste geval zou het in mijn ogen makkelijk zijn. In dat laatste geval hou je altijd handwerk denk ik

Acties:
  • 0 Henk 'm!

  • z1rconium
  • Registratie: Augustus 2014
  • Laatst online: 17-09 11:26
Ok, het ontgaat me een beetje waarom je 3 functie nodes hebt en daarna een join node.
Verwacht je binnen 5 seconden verschillende berichten ? Je krijgt alleen de msg's van unavailable states correct ?

Lijkt me simpeler te kunnen

code:
1
[{"id":"b8e23052.5e76c8","type":"switch","z":"c79e4d94.ada1a","name":"unavailable","property":"payload.event.new_state.state","propertyType":"msg","rules":[{"t":"eq","v":"unavailable","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":382,"y":192,"wires":[["13c30099.c19a47"]]},{"id":"2d401292.ea9846","type":"inject","z":"c79e4d94.ada1a","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":183,"y":192,"wires":[["aead5105.7c4bd8"]],"l":false},{"id":"aead5105.7c4bd8","type":"function","z":"c79e4d94.ada1a","name":"","func":"\nmsg = {\n    \"event_type\": \"state_changed\",\n    \"topic\": \"state_changed\",\n    \"payload\": {\n        \"event_type\": \"state_changed\",\n        \"entity_id\": \"light.led_strip\",\n        \"event\": {\n            \"entity_id\": \"light.led_strip\",\n            \"old_state\": {\n                \"entity_id\": \"light.led_strip\",\n                \"state\": \"off\",\n                \"attributes\": {\n                    \"friendly_name\": \"LED Strip\",\n                    \"supported_features\": 33\n                },\n                \"last_changed\": \"2020-07-06T08:02:48.621759+00:00\",\n                \"last_updated\": \"2020-07-06T08:02:48.621759+00:00\",\n                \"context\": {\n                    \"id\": \"42f5b28c1390415aa0b7d3d922c517eb\",\n                    \"parent_id\": null,\n                    \"user_id\": \"3822c99d69944d2f9c317a20a1ec467c\"\n                }\n            },\n            \"new_state\": {\n                \"entity_id\": \"light.led_strip\",\n                \"state\": \"unavailable\",\n                \"attributes\": {\n                    \"brightness\": 111,\n                    \"friendly_name\": \"LED Strip\",\n                    \"supported_features\": 33\n                },\n                \"last_changed\": \"2020-07-06T09:57:06.355826+00:00\",\n                \"last_updated\": \"2020-07-06T09:57:06.355826+00:00\",\n                \"context\": {\n                    \"id\": \"e18bf7124fd7432aa8e12594b06f5161\",\n                    \"parent_id\": null,\n                    \"user_id\": null\n                }\n            }\n        }\n    }\n   \n}\n\nreturn msg","outputs":1,"noerr":0,"x":231,"y":192,"wires":[["b8e23052.5e76c8"]],"l":false},{"id":"354f5629.910a52","type":"debug","z":"c79e4d94.ada1a","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":602,"y":192,"wires":[]},{"id":"13c30099.c19a47","type":"function","z":"c79e4d94.ada1a","name":"","func":"\ndevice_name = msg.payload.event.new_state.attributes.friendly_name\ndevice_type = msg.payload.event.new_state.entity_id.split(\".\")\ntext = `${device_type[0]} '${device_name}' is onbereikbaar` \n\npayload = {\n    chatId : 8764,\n    type : 'message',\n    content : text\n}\npayload.options = {parse_mode : \"Markdown\"};\nreturn{payload:payload};\n\n","outputs":1,"noerr":0,"x":495,"y":192,"wires":[["354f5629.910a52"]],"l":false},{"id":"4d6213d3.a12444","type":"comment","z":"c79e4d94.ada1a","name":"dummy data","info":"","x":214,"y":144,"wires":[]}]

Acties:
  • 0 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 22:21
z1rconium schreef op maandag 6 juli 2020 @ 19:22:
Ok, het ontgaat me een beetje waarom je 3 functie nodes hebt en daarna een join node.
Verwacht je binnen 5 seconden verschillende berichten ? Je krijgt alleen de msg's van unavailable states correct ?

Lijkt me simpeler te kunnen

code:
1
[{"id":"b8e23052.5e76c8","type":"switch","z":"c79e4d94.ada1a","name":"unavailable","property":"payload.event.new_state.state","propertyType":"msg","rules":[{"t":"eq","v":"unavailable","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":382,"y":192,"wires":[["13c30099.c19a47"]]},{"id":"2d401292.ea9846","type":"inject","z":"c79e4d94.ada1a","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":183,"y":192,"wires":[["aead5105.7c4bd8"]],"l":false},{"id":"aead5105.7c4bd8","type":"function","z":"c79e4d94.ada1a","name":"","func":"\nmsg = {\n    \"event_type\": \"state_changed\",\n    \"topic\": \"state_changed\",\n    \"payload\": {\n        \"event_type\": \"state_changed\",\n        \"entity_id\": \"light.led_strip\",\n        \"event\": {\n            \"entity_id\": \"light.led_strip\",\n            \"old_state\": {\n                \"entity_id\": \"light.led_strip\",\n                \"state\": \"off\",\n                \"attributes\": {\n                    \"friendly_name\": \"LED Strip\",\n                    \"supported_features\": 33\n                },\n                \"last_changed\": \"2020-07-06T08:02:48.621759+00:00\",\n                \"last_updated\": \"2020-07-06T08:02:48.621759+00:00\",\n                \"context\": {\n                    \"id\": \"42f5b28c1390415aa0b7d3d922c517eb\",\n                    \"parent_id\": null,\n                    \"user_id\": \"3822c99d69944d2f9c317a20a1ec467c\"\n                }\n            },\n            \"new_state\": {\n                \"entity_id\": \"light.led_strip\",\n                \"state\": \"unavailable\",\n                \"attributes\": {\n                    \"brightness\": 111,\n                    \"friendly_name\": \"LED Strip\",\n                    \"supported_features\": 33\n                },\n                \"last_changed\": \"2020-07-06T09:57:06.355826+00:00\",\n                \"last_updated\": \"2020-07-06T09:57:06.355826+00:00\",\n                \"context\": {\n                    \"id\": \"e18bf7124fd7432aa8e12594b06f5161\",\n                    \"parent_id\": null,\n                    \"user_id\": null\n                }\n            }\n        }\n    }\n   \n}\n\nreturn msg","outputs":1,"noerr":0,"x":231,"y":192,"wires":[["b8e23052.5e76c8"]],"l":false},{"id":"354f5629.910a52","type":"debug","z":"c79e4d94.ada1a","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":602,"y":192,"wires":[]},{"id":"13c30099.c19a47","type":"function","z":"c79e4d94.ada1a","name":"","func":"\ndevice_name = msg.payload.event.new_state.attributes.friendly_name\ndevice_type = msg.payload.event.new_state.entity_id.split(\".\")\ntext = `${device_type[0]} '${device_name}' is onbereikbaar` \n\npayload = {\n    chatId : 8764,\n    type : 'message',\n    content : text\n}\npayload.options = {parse_mode : \"Markdown\"};\nreturn{payload:payload};\n\n","outputs":1,"noerr":0,"x":495,"y":192,"wires":[["354f5629.910a52"]],"l":false},{"id":"4d6213d3.a12444","type":"comment","z":"c79e4d94.ada1a","name":"dummy data","info":"","x":214,"y":144,"wires":[]}]
Stukken eenvoudiger ja, alleen zie ik geen optie om apparaten uit te kunnen sluiten?

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • +1 Henk 'm!

  • z1rconium
  • Registratie: Augustus 2014
  • Laatst online: 17-09 11:26
Toppe schreef op dinsdag 7 juli 2020 @ 09:13:
[...]


Stukken eenvoudiger ja, alleen zie ik geen optie om apparaten uit te kunnen sluiten?
Dan kun je de functie node code veranderen, zoiets als:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
ignore_devices = ["light.led_strip","sensor.bla"]

device_name = msg.payload.event.new_state.attributes.friendly_name
device_entity = msg.payload.event.new_state.entity_id
device_type = device_entity.split(".")[0]

text = `${device_type} '${device_name}' is onbereikbaar` 

payload = {
    chatId : 8764,
    type : 'message',
    content : text
}
payload.options = {parse_mode : "Markdown"};

if(ignore_devices.includes(device_entity)){
    return null
}
else{
   return{payload:payload}; 
}


Waar je in ignore_devices de apparaten (entity_id in dit geval) kwijt kunt die je niet wilt zien

Acties:
  • 0 Henk 'm!

  • Tsurany
  • Registratie: Juni 2006
  • Niet online

Tsurany

⭐⭐⭐⭐⭐

lolgast schreef op vrijdag 26 juni 2020 @ 21:53:
Hier komt 20 juli een airco op het dak die ik tegelijkertijd wil voorzien van een Tado Smart AC (ik heb 0 vertrouwen in de apps van Fujitsu/Daikin/wie-dan-ook-die-aircos-maakt). Als dat in de lucht is ga ik ook met NR aan de slag. Eens kijken waar ik op uit ga komen :9
Het lijkt me dat die Tado Smart AC volledig vervangen kan worden door Node-RED waardoor je een stuk goedkoper uit bent. Als ik de website van Tado lees dan werkt hij ook nog eens via infrarood in plaats van via de WiFi connector van de airco, dat is helemaal matig.
Wil je automatiseren heb je een abonnement van twee euro per maand nodig en het apparaat zelf kost ook nog 100 euro. Je moet heel wat besparingen gaan realiseren om dat apparaat er uit te hebben. En voor zaken als open raam detectie heb je meerdere apparaten nodig.
Daarnaast is het de vraag hoe goed dit werkt met de apparaten zelf. Stel je hebt een multisplit airco, kan Tado dan rekening houden hiermee en zorgen dat niet de ene airco gaat koelen en de andere airco gaat verwarmen?

Ik denk dat je, als je echt niet wilt vertrouwen op de automatische programma's van je airco, het beter helemaal zelf in Node-RED kan bouwen.

SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N


Acties:
  • 0 Henk 'm!

  • Krisp
  • Registratie: Oktober 2004
  • Niet online

Krisp

like.no.other

Ik lees mijn SMA omvormer uit via Modbus TCP met Node-red (via een methode elders in dit topic genoemd), maar op de één of andere manier geeft mijn omvormer time-outs wanneer ik een nieuwe versie van Node-red deploy. Herkent iemand dit en valt daar iets tegen te doen? :)

Dit is het huidige script:

code:
1
[{"id":"31b99a3d.a4a396","type":"function","z":"64c54616.eaf958","name":"extract buffer data","func":"let DCCurrent1    = msg.payload[1] / 1000;       // 30769\nlet DCVoltage1    = msg.payload[3] / 100;        // 30771\nlet DCPower1      = msg.payload[5];              // 30773\nlet PowerTot      = msg.payload[7];              // 30775\nlet PowerL1       = msg.payload[9];              // 30777\nlet PowerL2       = msg.payload[11];             // 30779\nlet PowerL3       = msg.payload[13];             // 30781\n\nlet GridVoltagePhase1= 0;\nif (msg.payload[15] !== 65535) {\n    GridVoltagePhase1 = msg.payload[15] / 100;  // 30783\n}\n\nlet GridVoltagePhase2= 0;\nif (msg.payload[17] !== 65535) {\n    GridVoltagePhase2 = msg.payload[17] / 100;  // 30785\n}\n\nlet GridVoltagePhase3= 0;\nif (msg.payload[19] !== 65535) {\n    GridVoltagePhase3 = msg.payload[19] / 100;  // 30787\n}\n\nlet GridCurrent = 0;\nif (msg.payload[27] !== 65535) {\n    GridCurrent = msg.payload[27] / 1000;       // 30795\n}\n\nlet GridFrequency = 0;\nif (msg.payload[35] !== 65535) {\n    GridFrequency = msg.payload[35] / 100;       // 30803\n}\n\nlet _msg = {\n    payload: []\n};\n\n_msg.payload.push(\n    {\n\t\tmeasurement: \"energy\",\n\t\tfields: {\n\t\t\tdc_current1: DCCurrent1,\n\t\t\tdc_voltage1: DCVoltage1,\n\t\t\tdc_power1: DCPower1, \n\t\t\tac_power_tot: PowerTot,\n\t\t\tac_power1: PowerL1,\n\t\t\tac_power2: PowerL2,\n\t\t\tac_power3: PowerL3,\n\t\t\tac_voltage1: GridVoltagePhase1,\n\t\t\tac_voltage2: GridVoltagePhase2,\n\t\t\tac_voltage3: GridVoltagePhase3,\n\t\t\tac_current: GridCurrent,\n\t\t\tac_frequency: GridFrequency\n\t\t},\n\t\ttags:{\n\t\t    device: \"inverter\",\n\t\t    direction: \"west\"\n\t\t},\n\t\ttimestamp: new Date()\n\t}\n);\n\nreturn _msg;","outputs":1,"noerr":0,"x":470,"y":220,"wires":[["104edca6.a3d3fb"]]},{"id":"4d58e98d.62f118","type":"influxdb batch","z":"64c54616.eaf958","influxdb":"9c132289.f6eea8","precision":"","retentionPolicy":"","name":"","x":867,"y":236,"wires":[]},{"id":"a72366e8.8e3b2","type":"debug","z":"64c54616.eaf958","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":865.0003051757812,"y":348.35302734375,"wires":[]},{"id":"104edca6.a3d3fb","type":"switch","z":"64c54616.eaf958","name":"","property":"payload[0].fields.dc_power1","propertyType":"msg","rules":[{"t":"neq","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":654,"y":211,"wires":[["4d58e98d.62f118","a72366e8.8e3b2"]]},{"id":"71539471.bf7b2c","type":"function","z":"64c54616.eaf958","name":"extract buffer data","func":"let InternalTemperature = msg.payload[1] / 10; // 30953\nlet DCCurrent2 = msg.payload[5] / 1000;        // 30957\nlet DCVoltage2 = msg.payload[7] / 100;         // 30959\nlet DCPower2 = msg.payload[9]        ;           // 30961\nlet ACCurrentL1 = msg.payload[25] / 1000;    // 30977\nlet ACCurrentL2 = msg.payload[27] / 1000;    // 30979\nlet ACCurrentL3 = msg.payload[29] / 1000;    // 30981\n\n\nlet _msg = {\n    payload: []\n};\n\n_msg.payload.push(\n    {\n\t\tmeasurement: \"energy\",\n\t\tfields: {\n\t\t\ttemperature: InternalTemperature,\n\t\t\tdc_current2: DCCurrent2,\n\t\t\tdc_voltage2: DCVoltage2,\n\t\t\tdc_power2: DCPower2,\n\t\t\tac_current1: ACCurrentL1,\n\t\t\tac_current2: ACCurrentL2,\n\t\t\tac_current3: ACCurrentL3\n\t\t},\n\t\ttags:{\n\t\t    device: \"inverter\",\n\t\t    direction: \"west\"\n\t\t},\n\t\ttimestamp: new Date()\n\t}\n);\n\nreturn _msg;","outputs":1,"noerr":0,"x":470,"y":300,"wires":[["5639530c.eba7ac"]]},{"id":"5639530c.eba7ac","type":"switch","z":"64c54616.eaf958","name":"","property":"payload[0].fields.temperature","propertyType":"msg","rules":[{"t":"neq","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":650,"y":300,"wires":[["4d58e98d.62f118","a72366e8.8e3b2"]]},{"id":"3b2923bf.2542f4","type":"function","z":"64c54616.eaf958","name":"extract buffer data","func":"let TotalYield = msg.payload[1]; // 30529\n// let DailyYield = msg.payload[9]; // 30537\n\nlet _msg = {\n    payload: []\n};\n\n_msg.payload.push(\n    {\n\t\tmeasurement: \"energy\",\n\t\tfields: {\n\t\t\ttotal_yield: TotalYield,\n//\t\t\tdaily_yield: DailyYield\n\t\t},\n\t\ttags:{\n\t\t    device: \"inverter\",\n\t\t    direction: \"west\"\n\t\t},\n\t\ttimestamp: new Date()\n\t}\n);\n\nreturn _msg;","outputs":1,"noerr":0,"x":470,"y":380,"wires":[["3fa5a729.333ae"]]},{"id":"3fa5a729.333ae","type":"switch","z":"64c54616.eaf958","name":"","property":"payload[0].fields.totalyield","propertyType":"msg","rules":[{"t":"neq","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":650,"y":380,"wires":[["a72366e8.8e3b2","4d58e98d.62f118"]]},{"id":"60d6786e.aba2c8","type":"modbustcp-read","z":"64c54616.eaf958","name":"SMA - DC1 & AC","topic":"","dataType":"HoldingRegister","adr":"30769","quantity":"36","rate":"21","rateUnit":"s","server":"a42489d2.44522","ieeeType":"off","ieeeBE":"true","x":206,"y":223,"wires":[["31b99a3d.a4a396","f96f1791.ff195"]]},{"id":"fd99b8bc.696358","type":"modbustcp-read","z":"64c54616.eaf958","name":"SMA - DC2  & AC & TMP","topic":"","dataType":"HoldingRegister","adr":"30953","quantity":"36","rate":"31","rateUnit":"s","server":"a42489d2.44522","ieeeType":"off","ieeeBE":"true","x":220,"y":310.0000457763672,"wires":[["71539471.bf7b2c"]]},{"id":"5ad131c2.ccf4a","type":"modbustcp-read","z":"64c54616.eaf958","name":"SMA - YIELD","topic":"","dataType":"HoldingRegister","adr":"30531","quantity":"8","rate":"30","rateUnit":"s","server":"a42489d2.44522","ieeeType":"off","ieeeBE":"true","x":204.1764678955078,"y":401.00006103515625,"wires":[["3b2923bf.2542f4"]]},{"id":"f96f1791.ff195","type":"debug","z":"64c54616.eaf958","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":466,"y":135,"wires":[]},{"id":"9c132289.f6eea8","type":"influxdb","z":"","hostname":"influxdb","port":"8086","protocol":"http","database":"node_red","name":"InfluxDB","usetls":false,"tls":""},{"id":"a42489d2.44522","type":"modbustcp-server","z":"64c54616.eaf958","name":"SMA 8.0","host":"192.168.108.17","port":"502","unit_id":"4","reconnecttimeout":"5"}]

Life is what happens to you, while you're busy making other plans (John Lennon) - Ioniq 28kWh / 9,9kWP zonnepanelen (west) / Panasonic 9kW WP


Acties:
  • 0 Henk 'm!

  • Freek-Hendrik
  • Registratie: Augustus 2005
  • Laatst online: 06-10-2024
Krisp schreef op woensdag 8 juli 2020 @ 15:15:
Ik lees mijn SMA omvormer uit via Modbus TCP met Node-red (via een methode elders in dit topic genoemd), maar op de één of andere manier geeft mijn omvormer time-outs wanneer ik een nieuwe versie van Node-red deploy. Herkent iemand dit en valt daar iets tegen te doen? :)
@Krisp Welke versie van node-red-contrib-modbus gebruik je? @AUijtdehaag heeft ergens geroepen hier dat de nieuwste versie hiervan problemen geeft. Ik gebruik 4.1.3 van die node, in combinatie met node-red 1.1.0 en dat gaat prima. Althans, bij vaak deployen van die modbus nodes moet je nog steeds node-red af en toe herstarten vanaf de CLI, maar dat was bij de oude versie van node-red ook al zo.

Acties:
  • 0 Henk 'm!

  • Krisp
  • Registratie: Oktober 2004
  • Niet online

Krisp

like.no.other

Freek-Hendrik schreef op woensdag 8 juli 2020 @ 15:25:
[...]


@Krisp Welke versie van node-red-contrib-modbus gebruik je? @AUijtdehaag heeft ergens geroepen hier dat de nieuwste versie hiervan problemen geeft. Ik gebruik 4.1.3 van die node, in combinatie met node-red 1.1.0 en dat gaat prima. Althans, bij vaak deployen van die modbus nodes moet je nog steeds node-red af en toe herstarten vanaf de CLI, maar dat was bij de oude versie van node-red ook al zo.
Ik gebruik v1.2.3 van node-red-contrib-modbustcp, maar kennelijk is er een andere (betere?) versie?

Life is what happens to you, while you're busy making other plans (John Lennon) - Ioniq 28kWh / 9,9kWP zonnepanelen (west) / Panasonic 9kW WP


Acties:
  • 0 Henk 'm!

  • Tsurany
  • Registratie: Juni 2006
  • Niet online

Tsurany

⭐⭐⭐⭐⭐

Freek-Hendrik schreef op woensdag 8 juli 2020 @ 15:25:
[...]


@Krisp Welke versie van node-red-contrib-modbus gebruik je? @AUijtdehaag heeft ergens geroepen hier dat de nieuwste versie hiervan problemen geeft. Ik gebruik 4.1.3 van die node, in combinatie met node-red 1.1.0 en dat gaat prima. Althans, bij vaak deployen van die modbus nodes moet je nog steeds node-red af en toe herstarten vanaf de CLI, maar dat was bij de oude versie van node-red ook al zo.
Je hoeft Node-RED niet volledig te herstarten, een herstart van de flows vanuit de UI is genoeg.

SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N


Acties:
  • 0 Henk 'm!

  • Freek-Hendrik
  • Registratie: Augustus 2005
  • Laatst online: 06-10-2024
Voorheen las ik alleen de interne termperatuur van mijn SMA uit via modbus en Node-RED, en de rest via Home Assistant integratie die gebruik maakt van WebConnect. Om meer controle te hebben over hoe vaak er gechecked wordt, hoe het in influxDB terecht komt en om de timing tussen het uitlezen van de P1 info en de SMA gelijk te krijgen ben ik overgestapt naar de flow van (ik geloof) @Tsurany . Dus de SMA volledig uitlezen via Modbus.
Voor het overgrote deel werkt dit prima, en komen de waardes overeen met wat ik nog steeds uitlees via Home Assistant en WebConnect. Voor het DC voltage (register 30771) lijk ik echter geen goede waardes terug te krijgen. Er komen onafhankelijk van het opgewekte vermogen waardes van tussen de 30 - 80 terug. Via webconnect varieert dit tussen de grofweg 600 en 750. In eerste instantie dacht ik dat het wellicht alleen een kwestie was de register waarde delen door 10 ipv 100, maar dat is het helaas niet. Vandaag bijvoorbeeld kwamen er geregeld waardes van rond de 850 terug en spikes van 3400. Iemand enig idee wat hier fout gaat?

Acties:
  • 0 Henk 'm!

  • Tsurany
  • Registratie: Juni 2006
  • Niet online

Tsurany

⭐⭐⭐⭐⭐

@Freek-Hendrik weet je zeker dat het datatype gelijk is aan de andere waarden? Post anders even je SMA omvormer type.

SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N


Acties:
  • 0 Henk 'm!

  • Freek-Hendrik
  • Registratie: Augustus 2005
  • Laatst online: 06-10-2024
Tsurany schreef op donderdag 9 juli 2020 @ 01:37:
@Freek-Hendrik weet je zeker dat het datatype gelijk is aan de andere waarden? Post anders even je SMA omvormer type.
@Tsurany SMA TP 8.0, data type is net als de andere waarden een float, anders zou dat delen door 100 ook niet lukken toch?

Acties:
  • 0 Henk 'm!

  • Tsurany
  • Registratie: Juni 2006
  • Niet online

Tsurany

⭐⭐⭐⭐⭐

Freek-Hendrik schreef op donderdag 9 juli 2020 @ 04:48:
[...]

@Tsurany SMA TP 8.0, data type is net als de andere waarden een float, anders zou dat delen door 100 ook niet lukken toch?
Volgens mij is 30771 een signed double word en is de rest unsigned. Dat kan er mogelijk mee te maken hebben. Al merk ik dat dit in mijn flow niks uit maakt, daar gebruik ik ze ook door elkaar.
Ik gebruik dit voor voltage:
code:
1
let DCVoltage1    = msg.payload[3] / 100;        // 30771

En dan lees ik het register uit vanaf 30769.

Kan je je flow eens delen?

[ Voor 26% gewijzigd door Tsurany op 09-07-2020 09:24 ]

SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N


Acties:
  • 0 Henk 'm!

  • Freek-Hendrik
  • Registratie: Augustus 2005
  • Laatst online: 06-10-2024
Tsurany schreef op donderdag 9 juli 2020 @ 08:39:
[...]

Volgens mij is 30771 een signed double word en is de rest unsigned. Dat kan er mogelijk mee te maken hebben. Al merk ik dat dit in mijn flow niks uit maakt, daar gebruik ik ze ook door elkaar.
Ik gebruik dit voor voltage:
code:
1
let DCVoltage1    = msg.payload[3] / 100;        // 30771

En dan lees ik het register uit vanaf 30769.

Kan je je flow eens delen?
Ik had het nog even nagekeken in de Modbus specs maar signed en unsigned worden inderdaad door elkaar gebruikt. 30669 (DCCurrent1) wordt wel netjes uitgelezen. Het lijkt erop dat ik inderdaad jouw flow heb aangezien jouw stukje exact overeenkomt ;) . Ik deel die waarde nu even door 10 en niet door 100 maar goed dat maakt voor het uitlezen natuurlijk niet uit.

Voor de volledigheid nog even mijn versie van jouw flow...
code:
1
[{"id":"f7cea86d.c6da88","type":"tab","label":"P1 + SMA Logging","disabled":false,"info":""},{"id":"a101e8f.2ad0618","type":"function","z":"f7cea86d.c6da88","name":"Extract + Format MPPT A DC+AC","func":"let DCCurrent1    = msg.payload[1] / 1000;       // 30769\nlet DCVoltage1    = msg.payload[3] /10;              // 30771\nlet DCPower1      = msg.payload[5];              // 30773\nlet PowerTot      = msg.payload[7];              // 30775\nlet ACPowerL1       = msg.payload[9];              // 30777\nlet ACPowerL2       = msg.payload[11];             // 30779\nlet ACPowerL3       = msg.payload[13];             // 30781\n\nlet GridVoltagePhase1= 0;\nif (msg.payload[15] !== 65535) {\n    GridVoltagePhase1 = msg.payload[15] / 100;  // 30783\n}\n\nlet GridVoltagePhase2= 0;\nif (msg.payload[17] !== 65535) {\n    GridVoltagePhase2 = msg.payload[17] / 100;  // 30785\n}\n\nlet GridVoltagePhase3= 0;\nif (msg.payload[19] !== 65535) {\n    GridVoltagePhase3 = msg.payload[19] / 100;  // 30787\n}\n\nlet GridCurrent = 0;\nif (msg.payload[27] !== 65535) {\n    GridCurrent = msg.payload[27] / 1000;       // 30795\n}\n\nlet GridFrequency = 0;\nif (msg.payload[35] !== 65535) {\n    GridFrequency = msg.payload[35] / 100;       // 30803\n}\n\nlet _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n\t\tmeasurement: \"pv_energy\",\n\t\tfields: {\n\t\t\tdc_current1: DCCurrent1,\n\t\t\tdc_voltage1: DCVoltage1,\n\t\t\tdc_power1: DCPower1, \n\t\t\tac_power_tot: PowerTot,\n\t\t\tac_powerL1: ACPowerL1,\n\t\t\tac_powerL2: ACPowerL2,\n\t\t\tac_powerL3: ACPowerL3,\n\t\t\tac_voltage1: GridVoltagePhase1,\n\t\t\tac_voltage2: GridVoltagePhase2,\n\t\t\tac_voltage3: GridVoltagePhase3,\n\t\t\tac_current_tot: GridCurrent,\n\t\t\tac_frequency: GridFrequency\n\t\t},\n\t\ttags:{\n\t\t    device: \"SMA STP 8.0\",\n\t\t},\n\t\ttimestamp: new Date()\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":752.4999961853027,"y":598.9999866485596,"wires":[["f5f9eff5.bd3d","122a20d3.ea9bff","2be050fe.0fd02"]]},{"id":"46dec42c.3c2cc4","type":"join","z":"f7cea86d.c6da88","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"10","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":1717.5000381469727,"y":360.0000343322754,"wires":[["8e3642a2.d5d99","6faad80f.a1e4d8"]]},{"id":"467f5ce3.98657c","type":"function","z":"f7cea86d.c6da88","name":"Extract SMA AC + Temp","func":"let InternalTemperature = msg.payload[1] /10; // 30953\nlet ACCurrentL1 = msg.payload[25] / 1000;    // 30977\nlet ACCurrentL2 = msg.payload[27] / 1000;    // 30979\nlet ACCurrentL3 = msg.payload[29] / 1000;    // 30981\n\nlet _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n\t\t\tsma_temperature: InternalTemperature,\n\t\t\tsma_ac_currentL1: ACCurrentL1,\n\t\t\tsma_ac_currentL2: ACCurrentL2,\n\t\t\tsma_ac_currentL3: ACCurrentL3,\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":730,"y":340,"wires":[["9a40dc05.66145"]]},{"id":"9a40dc05.66145","type":"join","z":"f7cea86d.c6da88","name":"","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"8","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":954.5000534057617,"y":374.0000057220459,"wires":[["afafdc15.ea9698","13967085.f7056f"]]},{"id":"afafdc15.ea9698","type":"function","z":"f7cea86d.c6da88","name":"Format SMA AC","func":"let _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        measurement: \"pv_energy\",\n\t\tfields: {\n\t\t\tACCurrentL1: msg.payload.sma_ac_currentL1,\n\t\t\tACCurrentL2: msg.payload.sma_ac_currentL2,\n\t\t\tACCurrentL3: msg.payload.sma_ac_currentL3,\n\t\t\t//voltage: msg.payload.sma_ac_voltage,\n\t\t\t//power: msg.payload.sma_ac_power_tot,\n\t\t},\n\t\ttags:{\n\t\t    device: \"SMA STP 8.0\",\n\t\t    type: \"AC\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1140,"y":400,"wires":[["5b6ba5a7.94f24c"]]},{"id":"13967085.f7056f","type":"function","z":"f7cea86d.c6da88","name":"Format SMA Temp","func":"let _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        measurement: \"temperature\",\n\t\tfields: {\n\t\t\tsma_temperature: msg.payload.sma_temperature,\n\t\t},\n\t\ttags:{\n\t\t    device: \"SMA STP 8.0\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1150,"y":340,"wires":[["4ec5997d.9ba75"]]},{"id":"6faad80f.a1e4d8","type":"influxdb batch","z":"f7cea86d.c6da88","influxdb":"3695f597.44c56a","precision":"","retentionPolicy":"","name":"InfluxDB","x":1860,"y":300,"wires":[]},{"id":"f5f9eff5.bd3d","type":"switch","z":"f7cea86d.c6da88","name":"Filter null","property":"payload.fields.ac_power_tot","propertyType":"msg","rules":[{"t":"neq","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1332.4999961853027,"y":598.9999866485596,"wires":[["46dec42c.3c2cc4"]]},{"id":"4ec5997d.9ba75","type":"switch","z":"f7cea86d.c6da88","name":"Filter null","property":"payload.fields.sma_temperature","propertyType":"msg","rules":[{"t":"neq","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1340,"y":340,"wires":[["46dec42c.3c2cc4"]]},{"id":"5b6ba5a7.94f24c","type":"switch","z":"f7cea86d.c6da88","name":"Filter null","property":"payload.fields.power","propertyType":"msg","rules":[{"t":"neq","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1340,"y":400,"wires":[["46dec42c.3c2cc4"]]},{"id":"71135a9b.3ffab4","type":"function","z":"f7cea86d.c6da88","name":"Set totalyield filter value","func":"flow.set('totalyield_sma',msg.payload.fields.totalyield);","outputs":1,"noerr":0,"x":1590,"y":180,"wires":[[]]},{"id":"11bc3a9d.3aaa55","type":"switch","z":"f7cea86d.c6da88","name":"Limit Repeating","property":"payload.fields.totalyield","propertyType":"msg","rules":[{"t":"neq","v":"totalyield_sma","vt":"flow"}],"checkall":"true","repair":false,"outputs":1,"x":1360,"y":240,"wires":[["71135a9b.3ffab4","46dec42c.3c2cc4"]]},{"id":"a91b04f.6f2d9f8","type":"inject","z":"f7cea86d.c6da88","name":"Reset totalyield filter","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":171.5,"y":58,"wires":[["84f8825b.609848"]]},{"id":"84f8825b.609848","type":"function","z":"f7cea86d.c6da88","name":"Reset totalyield filter value","func":"flow.set('totalyield',0);\nflow.set('gas',0);","outputs":1,"noerr":0,"x":486,"y":58,"wires":[[]]},{"id":"3befd1b9.070d36","type":"switch","z":"f7cea86d.c6da88","name":"Filter invalid","property":"payload.fields.totalyield","propertyType":"msg","rules":[{"t":"lt","v":"200000","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1150,"y":240,"wires":[["11bc3a9d.3aaa55"]]},{"id":"4121f2f.c02e20c","type":"function","z":"f7cea86d.c6da88","name":"Extract DSMR","func":"var payload = msg.payload\n//var clean_payload = msg.payload.trim();\n//var output = clean_payload.split('\\t');\n//var USAGE1 = (JSON.parse(msg.payload.electricity_delivered_1*1000)).toString();\n//var RETURN1 = (JSON.parse(msg.payload.electricity_returned_1*1000)).toString();\n//var USAGE2 = (JSON.parse(msg.payload.electricity_delivered_2*1000)).toString();\n//var RETURN2 = (JSON.parse(msg.payload.electricity_returned_2*1000)).toString();\n//var CONS = (JSON.parse(msg.payload.electricity_currently_delivered*1000)).toString();\n//var PROD = (JSON.parse(msg.payload.electricity_currently_returned*1000)).toString();\n\n\nvar consumed_high = JSON.parse(msg.payload.results[0].electricity_delivered_2*1000);\nvar consumed_low = JSON.parse(msg.payload.results[0].electricity_delivered_1*1000);\nvar consumed_gas = JSON.parse(payload.results[0].extra_device_delivered);\nvar produced_high = JSON.parse(msg.payload.results[0].electricity_returned_2*1000);\nvar produced_low = JSON.parse(msg.payload.results[0].electricity_returned_1*1000);\nvar current_consumption = JSON.parse(msg.payload.results[0].electricity_currently_delivered*1000);\nvar current_production = JSON.parse(msg.payload.results[0].electricity_currently_returned*1000);\nvar current_voltage1 = JSON.parse(msg.payload.results[0].phase_voltage_l1);\nvar current_voltage2 = JSON.parse(msg.payload.results[0].phase_voltage_l2);\nvar current_voltage3 = JSON.parse(msg.payload.results[0].phase_voltage_l3);\n\n\nlet _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        consumed_high: consumed_high,\n        consumed_low: consumed_low,\n        consumed_gas: consumed_gas,\n        produced_high: produced_high,\n        produced_low: produced_low,\n        current_consumption: current_consumption,\n        current_production: current_production,\n        current_voltage1: current_voltage1,\n        current_voltage2: current_voltage2,\n        current_voltage3: current_voltage3,\n\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":520,"y":700,"wires":[["7b2a9aef.a261b4","e5e389f2.0ca03","78b3d1da.3d5708","573d9c09.a1858c","8cfe68b3.6353c8","17c1351.9baa44b","1983145f.c11604","a85fb598.bb6fc8","182f6aa7.d874a5","6c3e43e8.e0c2bc","5d8d4682.21b8a","122a20d3.ea9bff"]]},{"id":"e5e389f2.0ca03","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Consumption Low - kWh","func":"let consumed_low = msg.payload.consumed_low / 1000;\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\tgrid_consumption_low: consumed_low,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    rate: \"Low\",\n\t\t    direction: \"Grid Consumption kWh\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1476.4999732971191,"y":1102.0000019073486,"wires":[["46dec42c.3c2cc4"]]},{"id":"78b3d1da.3d5708","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Consumption High kWh","func":"let consumed_high = msg.payload.consumed_high / 1000;\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\tgrid_consumption_high: consumed_high,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    rate: \"High\",\n\t\t    direction: \"Grid Consumption - kWh\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1476.4999732971191,"y":1142.0000019073486,"wires":[["46dec42c.3c2cc4"]]},{"id":"8cfe68b3.6353c8","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Production High","func":"let produced_high = msg.payload.produced_high / 1000;\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\tgrid_production_high: produced_high,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    rate: \"High\",\n\t\t    direction: \"Grid Production\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1455.5,"y":1282,"wires":[["46dec42c.3c2cc4"]]},{"id":"17c1351.9baa44b","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Production Low","func":"let produced_low = msg.payload.produced_low / 1000;\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\tgrid_production_low: produced_low,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    rate: \"Low\",\n\t\t    direction: \"Grid Production\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1456.5,"y":1241,"wires":[["46dec42c.3c2cc4"]]},{"id":"182f6aa7.d874a5","type":"function","z":"f7cea86d.c6da88","name":"Extract P1 Power","func":"let current_voltage1 = msg.payload.current_voltage1\nlet current_voltage2 = msg.payload.current_voltage2\nlet current_voltage3 = msg.payload.current_voltage3\nlet current_consumption = msg.payload.current_consumption\nlet current_production = msg.payload.current_production\n\n\nlet _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n\t\t\tp1_ac_power_consumption: Number(current_consumption),\n\t\t\tp1_ac_power_production: Number(current_production),\n\t\t\tp1_ac_voltage1: Number(current_voltage1),\n\t\t\tp1_ac_voltage2: Number(current_voltage2),\n\t\t\tp1_ac_voltage3: Number(current_voltage3),\n\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":814.5001831054688,"y":820.5,"wires":[["40537bfb.ce2f24","d7649d7.edc21e","fd3c6c2a.175f2","2be050fe.0fd02"]]},{"id":"40537bfb.ce2f24","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Net Power Consumption - W","func":"let _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\t//voltage1: msg.payload.p1_ac_voltage1,\n\t\t\t//voltage2: msg.payload.p1_ac_voltage2,\n\t\t\t//voltage3: msg.payload.p1_ac_voltage3,\n\t\t\tnet_power_consumption: msg.payload.p1_ac_power_consumption - msg.payload.p1_ac_power_production,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    type: \"AC\",\n\t\t    direction: \"Grid Net Power Consumption - W\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":1296.4999732971191,"y":822.0000019073486,"wires":[["46dec42c.3c2cc4"]]},{"id":"573d9c09.a1858c","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Consumption Total - kWh","func":"let consumed_high = msg.payload.consumed_high / 1000;\nlet consumed_low = msg.payload.consumed_low / 1000;\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\tgrid_consumption_total: consumed_high + consumed_low,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    rate: \"Total\",\n\t\t    direction: \"Grid Consumption - kWh\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1486.4999732971191,"y":1182.0000019073486,"wires":[["46dec42c.3c2cc4"]]},{"id":"1983145f.c11604","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Production Total","func":"let produced_low = msg.payload.produced_low / 1000;\nlet produced_high = msg.payload.produced_high / 1000;\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\tgrid_production_total: produced_low + produced_high,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    rate: \"Total\",\n\t\t    direction: \"Grid Production\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1456.4999732971191,"y":1322.0000019073486,"wires":[["46dec42c.3c2cc4"]]},{"id":"a85fb598.bb6fc8","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Net Consumption Total - kWh","func":"let consumed_low = msg.payload.consumed_low / 1000;\nlet consumed_high = msg.payload.consumed_high / 1000;\nlet produced_low = msg.payload.produced_low / 1000;\nlet produced_high = msg.payload.produced_high / 1000;\n\nlet TotalUsage = consumed_low + consumed_high;\nlet TotalDelivery = produced_low + produced_high;\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\tnet_consumption_total: TotalUsage.toFixed(2) - TotalDelivery.toFixed(2),\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    rate: \"Total\",\n\t\t    direction: \"Grid Net Consumption Total - kWh\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1496.4999732971191,"y":1462.0000019073486,"wires":[["46dec42c.3c2cc4"]]},{"id":"7b2a9aef.a261b4","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Gas","func":"let consumed_gas = msg.payload.consumed_gas;\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"gas\",\n\t\tfields: {\n\t\t\ttotalyield: consumed_gas,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    direction: \"Gas Consumption\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1216.4999732971191,"y":982.0000019073486,"wires":[["f77198cf.8248d"]]},{"id":"d7649d7.edc21e","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Consumption - W","func":"let _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\t//voltage1: msg.payload.p1_ac_voltage1,\n\t\t\t//voltage2: msg.payload.p1_ac_voltage2,\n\t\t\t//voltage3: msg.payload.p1_ac_voltage3,\n\t\t\tgrid_power_consumption: msg.payload.p1_ac_power_consumption,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    type: \"AC\",\n\t\t    direction: \"Grid Consumption - W\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":1256.4999732971191,"y":862.0000019073486,"wires":[["fa37d4b0.4766d"]]},{"id":"fd3c6c2a.175f2","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Production - W","func":"let _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\t//voltage1: msg.payload.p1_ac_voltage1,\n\t\t\t//voltage2: msg.payload.p1_ac_voltage2,\n\t\t\t//voltage3: msg.payload.p1_ac_voltage3,\n\t\t\tgrid_power_production: msg.payload.p1_ac_power_production*-1,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    type: \"AC\",\n\t\t    direction: \"Grid Production - W\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":1256.4999732971191,"y":902.0000019073486,"wires":[["da6e1769.a56ce8"]]},{"id":"fa37d4b0.4766d","type":"switch","z":"f7cea86d.c6da88","name":"Filter null","property":"payload.fields.power","propertyType":"msg","rules":[{"t":"neq","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1476.4999732971191,"y":862.0000019073486,"wires":[["46dec42c.3c2cc4"]]},{"id":"da6e1769.a56ce8","type":"switch","z":"f7cea86d.c6da88","name":"Filter null","property":"payload.fields.power","propertyType":"msg","rules":[{"t":"neq","v":"","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1476.4999732971191,"y":902.0000019073486,"wires":[["46dec42c.3c2cc4"]]},{"id":"3a407c0c.71b7e4","type":"function","z":"f7cea86d.c6da88","name":"Format Internal Power Consumption - W","func":"grid_consumption = Number(msg.payload.p1_ac_power_consumption);\ngrid_production = Number(msg.payload.p1_ac_power_production);\n\ninternal_production = msg.payload.fields.ac_power_tot\nif(internal_production === null)\n{\n    internal_production = 0;\n}\n\nnet_grid = grid_consumption - grid_production;\nnet_internal_consumption = internal_production + net_grid;\n\n\n\n\n_msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\tvoltage1: msg.payload.p1_ac_voltage1,\n\t\t\tvoltage2: msg.payload.p1_ac_voltage2,\n\t\t\tvoltage3: msg.payload.p1_ac_voltage3,\n\t\t\tnet_power_consumption: (Number(net_internal_consumption)),\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    type: \"AC\",\n\t\t    direction: \"Internal Power Consumption - W\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":1296.4999732971191,"y":782.0000019073486,"wires":[["46dec42c.3c2cc4"]]},{"id":"2be050fe.0fd02","type":"join","z":"f7cea86d.c6da88","name":"","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"10","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1046.4999732971191,"y":782.0000019073486,"wires":[["3a407c0c.71b7e4"]]},{"id":"f62fd7ab.e75f58","type":"function","z":"f7cea86d.c6da88","name":"Create Timestamp","func":"let _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n\t\ttimestamp: new Date(),\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":155,"y":496.00000190734863,"wires":[["402cc80e.e06c68"]]},{"id":"402cc80e.e06c68","type":"change","z":"f7cea86d.c6da88","name":"Set Timestamp","rules":[{"t":"move","p":"payload.timestamp","pt":"msg","to":"timestamp","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":209.28905487060547,"y":556.3437805175781,"wires":[["955d6017.df9658"]]},{"id":"f77198cf.8248d","type":"switch","z":"f7cea86d.c6da88","name":"Limit Repeating","property":"payload.fields.totalyield","propertyType":"msg","rules":[{"t":"neq","v":"gas","vt":"flow"}],"checkall":"true","repair":false,"outputs":1,"x":1456.4999732971191,"y":982.0000019073486,"wires":[["bcd0d36f.8bad58","46dec42c.3c2cc4"]]},{"id":"bcd0d36f.8bad58","type":"function","z":"f7cea86d.c6da88","name":"Set totalyield filter value","func":"flow.set('gas',msg.payload.fields.totalyield);","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1446.4999732971191,"y":1042.0000019073486,"wires":[[]]},{"id":"5d8d4682.21b8a","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Net Consumption Low","func":"let consumed_low = msg.payload.consumed_low / 1000;\nlet produced_low = msg.payload.produced_low / 1000;\n\nlet TotalUsage = consumed_low;\nlet TotalDelivery = produced_low;\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\tnet_consumption_low: TotalUsage.toFixed(2) - TotalDelivery.toFixed(2),\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    rate: \"Low\",\n\t\t    direction: \"Grid Net Consumption Low\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1476.4999732971191,"y":1382.0000019073486,"wires":[["46dec42c.3c2cc4"]]},{"id":"6c3e43e8.e0c2bc","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Net Consumption High","func":"let consumed_high = msg.payload.consumed_high / 1000;\nlet produced_high = msg.payload.produced_high / 1000;\n\nlet TotalUsage = consumed_high;\nlet TotalDelivery = produced_high;\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\tnet_consumption_high: TotalUsage.toFixed(2) - TotalDelivery.toFixed(2),\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    rate: \"High\",\n\t\t    direction: \"Grid Net Consumption High\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1476.4999732971191,"y":1422.0000019073486,"wires":[["46dec42c.3c2cc4"]]},{"id":"52519521.7bd0a4","type":"function","z":"f7cea86d.c6da88","name":"Format SMA Yield","func":"let _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"pv_energy\",\n\t\tfields: {\n\t\t\ttotalyield: msg.payload.totalyield,\n\t\t\t//dailyyield: msg.payload.dailyyield,\n\t\t},\n\t\ttags:{\n\t\t    device: \"SMA - STP 8.0\",\n\t\t    direction: \"Internal Production\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":950,"y":240,"wires":[["3befd1b9.070d36"]]},{"id":"122a20d3.ea9bff","type":"join","z":"f7cea86d.c6da88","name":"","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"10","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":950,"y":500,"wires":[["fa93721a.17b628"]]},{"id":"52ba2809.da429","type":"function","z":"f7cea86d.c6da88","name":"CalculateYield","func":"let yieldCycle = msg.payload[0];    // 30531\nlet yieldCycleValue = 65535;    // 30531\nlet yieldCurrent = msg.payload[1];\nlet DailyYield = msg.payload[7] / 1000;    // 30535\n\nlet TotalYieldwH = (yieldCycle * yieldCycleValue) + yieldCurrent;\nlet TotalYield = TotalYieldwH / 1000;\n\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n      totalyield: TotalYield,\n      dailyyield: DailyYield,\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":700,"y":240,"wires":[["52519521.7bd0a4","122a20d3.ea9bff"]]},{"id":"773312c4.c3f9f4","type":"function","z":"f7cea86d.c6da88","name":"Format Total Consumption incl. direct - kWh","func":"internal_consumption = msg.payload.total_direct_consumption + msg.payload.net_consumption;\n\n\nlet _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\ttotal_consumption_incl_direct: parseFloat(internal_consumption.toFixed(2)),\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    direction: \"Total Consumption incl. direct - kWh\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1330,"y":460,"wires":[["46dec42c.3c2cc4"]]},{"id":"2a3a401c.7485c8","type":"function","z":"f7cea86d.c6da88","name":"Combine Data","func":"start_sma_production = 2661.41; //Value of SMA production at installation of new meter\nnet_production_wh = (Number(msg.payload.produced_high) + Number(msg.payload.produced_low));\nnet_consumption_wh = (Number(msg.payload.consumed_high) + Number(msg.payload.consumed_low));\nnet_consumption = net_consumption_wh / 1000;\nnet_production = net_production_wh / 1000;\nsma_production = msg.payload.totalyield - start_sma_production;\ndirect_consumption = sma_production - net_production;\ncurrent_net_powerusage = msg.payload.fields.ac_power_tot - msg.payload.current_production + msg.payload.current_consumption \n\nlet _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        net_consumption: net_consumption,\n        net_production: net_production,\n        sma_production: sma_production,\n        total_direct_consumption: direct_consumption,\n        current_direct_consumption: current_net_powerusage,\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1306,"y":502,"wires":[["773312c4.c3f9f4","1556de9c.5e0ba9"]]},{"id":"1556de9c.5e0ba9","type":"function","z":"f7cea86d.c6da88","name":"Format Direct Consumption - KWH / W","func":"total_direct_consumption = msg.payload.total_direct_consumption;\ncurrent_direct_consumption = msg.payload.current_direct_consumption;\n\nlet _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\ttotal_direct_consumption: parseFloat(total_direct_consumption.toFixed(2)),\n\t\t\tcurrent_direct_consumption: current_direct_consumption,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    direction: \"Direct Consumption\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1310,"y":540,"wires":[["46dec42c.3c2cc4"]]},{"id":"fa93721a.17b628","type":"switch","z":"f7cea86d.c6da88","name":"Filter Invalid","property":"payload.totalyield","propertyType":"msg","rules":[{"t":"lt","v":"200000","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1110,"y":500,"wires":[["2a3a401c.7485c8"]]},{"id":"9a22c62d.fee228","type":"interval","z":"f7cea86d.c6da88","name":"interval","interval":"15","onstart":false,"msg":"ping","showstatus":true,"unit":"seconds","statusformat":"YYYY-MM-D HH:mm:ss","x":55,"y":436.00000190734863,"wires":[["f62fd7ab.e75f58"]]},{"id":"955d6017.df9658","type":"function","z":"f7cea86d.c6da88","name":"Set API key here - DSMR reader","func":"msg.action = msg.payload;\nmsg.headers = { \n 'X-AUTHKEY': '3ONYSGO32RGJBBBH3M0PZD6LOIUNM0KB2X5IJ3YGT58603SOW3CGBXP04CCDJU80',\n};\n\nreturn msg;","outputs":1,"noerr":0,"x":190,"y":640,"wires":[["19a99c3.07593e4"]]},{"id":"19a99c3.07593e4","type":"function","z":"f7cea86d.c6da88","name":"Set up data","func":"msg.action = msg.payload;\n\nmsg.url = \"http://dsmr/api/v2/datalogger/dsmrreading?ordering=-timestamp&limit=1\";\n\nreturn msg;\n\n","outputs":1,"noerr":0,"x":90,"y":700,"wires":[["64e0f49e.41f294"]]},{"id":"64e0f49e.41f294","type":"http request","z":"f7cea86d.c6da88","name":"Post","method":"GET","ret":"obj","paytoqs":false,"url":"","tls":"","proxy":"","authType":"","x":270,"y":700,"wires":[["4121f2f.c02e20c"]]},{"id":"c2583d8f.841018","type":"debug","z":"f7cea86d.c6da88","name":"headercheck","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":250,"y":840,"wires":[]},{"id":"c8e41a61.7213d","type":"modbustcp-read","z":"f7cea86d.c6da88","name":"SMA MPPT A DC + AC","topic":"","dataType":"HoldingRegister","adr":"30769","quantity":"36","rate":"15","rateUnit":"s","server":"e20e236b.c03ae","ieeeType":"off","ieeeBE":"true","x":468.5,"y":600,"wires":[["a101e8f.2ad0618","3d9ecd88.86d752"]]},{"id":"b014d4e3.c91d98","type":"modbustcp-read","z":"f7cea86d.c6da88","name":"SMA Yield","topic":"","dataType":"HoldingRegister","adr":"30529","quantity":"8","rate":"15","rateUnit":"s","server":"e20e236b.c03ae","ieeeType":"off","ieeeBE":"true","x":477.5,"y":236,"wires":[["52ba2809.da429"]]},{"id":"51cb1751.32c66","type":"modbustcp-read","z":"f7cea86d.c6da88","name":"SMA Temp + AC currents","topic":"","dataType":"HoldingRegister","adr":"30953","quantity":"32","rate":"15","rateUnit":"s","server":"e20e236b.c03ae","ieeeType":"off","ieeeBE":"true","x":481.5,"y":342,"wires":[["467f5ce3.98657c"]]},{"id":"8e3642a2.d5d99","type":"debug","z":"f7cea86d.c6da88","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1886.5,"y":392,"wires":[]},{"id":"3d9ecd88.86d752","type":"debug","z":"f7cea86d.c6da88","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":733.5,"y":468,"wires":[]},{"id":"3695f597.44c56a","type":"influxdb","z":"","hostname":"192.168.168.250","port":"8086","protocol":"http","database":"alldata","name":"InfluxDB","usetls":false,"tls":""},{"id":"e20e236b.c03ae","type":"modbustcp-server","z":"","name":"SMA STP 8.0","host":"192.168.168.105","port":"502","unit_id":"3","reconnecttimeout":"30"}]

Acties:
  • 0 Henk 'm!

  • Tsurany
  • Registratie: Juni 2006
  • Niet online

Tsurany

⭐⭐⭐⭐⭐

Freek-Hendrik schreef op donderdag 9 juli 2020 @ 10:02:
[...]

Ik had het nog even nagekeken in de Modbus specs maar signed en unsigned worden inderdaad door elkaar gebruikt. 30669 (DCCurrent1) wordt wel netjes uitgelezen. Het lijkt erop dat ik inderdaad jouw flow heb aangezien jouw stukje exact overeenkomt ;) . Ik deel die waarde nu even door 10 en niet door 100 maar goed dat maakt voor het uitlezen natuurlijk niet uit.

Voor de volledigheid nog even mijn versie van jouw flow...
Dat zou inderdaad goed moeten werken. Het enige wat ik me kan voorstellen is dat de modbus library die je hier gebruikt anders werkt waardoor je vreemde waardes krijgt. Je kan eens proberen of deze flow goed werkt:
code:
1
[{"id":"44496155.7c353","type":"tab","label":"Flow 2","disabled":false,"info":""},{"id":"8b976be3.f67bc8","type":"function","z":"44496155.7c353","name":"Extract + Format SMA DC1","func":"let DCCurrent1    = msg.payload[1] / 1000;       // 30769\nlet DCVoltage1    = msg.payload[3] / 100;        // 30771\nlet DCPower1      = msg.payload[5];              // 30773\n\nlet _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        measurement: \"energy\",\n\t\tfields: {\n\t\t\tcurrent: DCCurrent1,\n\t\t\tvoltage: DCVoltage1,\n\t\t\tpower: DCPower1, \n\t\t},\n\t\ttags:{\n\t\t    device: \"SMA 5.0 - MPPT B\",\n\t\t    orientation: \"East\",\n\t\t    type: \"DC\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":900,"y":100,"wires":[["756878ea.1bfd48"]]},{"id":"b3ae5b9a.6ba068","type":"modbus-getter","z":"44496155.7c353","name":"DC1 - AC","showStatusActivities":true,"showErrors":true,"logIOActivities":false,"unitid":"","dataType":"HoldingRegister","adr":"30769","quantity":"16","server":"84430495.b18c58","useIOFile":false,"ioFile":"","useIOForPayload":false,"x":680,"y":100,"wires":[["8b976be3.f67bc8"],[]]},{"id":"26f20cbd.d950d4","type":"function","z":"44496155.7c353","name":"Create Timestamp","func":"let _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n\t\ttimestamp: new Date(),\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":290,"y":100,"wires":[["9f6a5a89.619898"]]},{"id":"9f6a5a89.619898","type":"change","z":"44496155.7c353","name":"Set Timestamp","rules":[{"t":"move","p":"payload.timestamp","pt":"msg","to":"timestamp","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":500,"y":100,"wires":[["b3ae5b9a.6ba068"]]},{"id":"756878ea.1bfd48","type":"debug","z":"44496155.7c353","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1130,"y":100,"wires":[]},{"id":"bc8153f4.949bf","type":"inject","z":"44496155.7c353","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":100,"y":100,"wires":[["26f20cbd.d950d4"]]},{"id":"84430495.b18c58","type":"modbus-client","z":"","name":"SMA","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":true,"tcpHost":"10.5.0.70","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":3,"commandDelay":1,"clientTimeout":1500,"reconnectTimeout":2000}]


Zit enkel de bare essentials in met dan de modbus library die bij mij goed werkt. Heb hem even snel getest en ik krijg er betrouwbare waarden uit.

SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N


Acties:
  • 0 Henk 'm!

  • Freek-Hendrik
  • Registratie: Augustus 2005
  • Laatst online: 06-10-2024
Tsurany schreef op donderdag 9 juli 2020 @ 10:32:
[...]

Zit enkel de bare essentials in met dan de modbus library die bij mij goed werkt. Heb hem even snel getest en ik krijg er betrouwbare waarden uit.
Ik helaas niet :-(

Afbeeldingslocatie: https://tweakers.net/i/1wShuAgKEawPZZ7AmAaGcShhKjM=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/S88IUq2Ev2M7KgpCx2NRdVcV.png?f=user_large

Welke versie van de modbus nodes en Node-RED gebruik jij? Ik heb de volgende:
Node-Red: v1.1.0
node-red-contrib-modbus: v4.1.3
node-red-contrib-modbustcp: v1.2.3

[ Voor 8% gewijzigd door Freek-Hendrik op 09-07-2020 11:31 ]


Acties:
  • 0 Henk 'm!

  • AUijtdehaag
  • Registratie: Oktober 2006
  • Niet online
Freek-Hendrik schreef op donderdag 9 juli 2020 @ 10:02:
[...]
Het lijkt erop dat ik inderdaad jouw flow heb aangezien jouw stukje exact overeenkomt ;)
En waar denk je dat die (basis) code weer vandaan komt? ;)

Probeer eens de andere mppt ingang van de SMA.
Je gebruikt nu toch maar 1 mppt ingang op het moment?
En kijk welke data je er dan uitkrijgt. Modbus adres 30961

Dan weet je of het aan de hard of de soft ware ligt....

PVOutput Github - Div ESP TK: MHI - Clack - Marstek


Acties:
  • 0 Henk 'm!

  • Freek-Hendrik
  • Registratie: Augustus 2005
  • Laatst online: 06-10-2024
AUijtdehaag schreef op donderdag 9 juli 2020 @ 11:50:
[...]


En waar denk je dat die (basis) code weer vandaan komt? ;)

Probeer eens de andere mppt ingang van de SMA.
Je gebruikt nu toch maar 1 mppt ingang op het moment?
En kijk welke data je er dan uitkrijgt. Modbus adres 30961

Dan weet je of het aan de hard of de soft ware ligt....
De andere ingang proberen was ik nog niet aan toegekomen. Kwestie van de schakelaar naast de omvormer en op de omvormer zelf uitzetten en dan de kabels omprikken? Kan daar nog iets fout aan?
Ik verwacht eigenlijk niet dat de fout in hardware zit omdat via WebConnect alles wel prima uit te lezen is.

Acties:
  • 0 Henk 'm!

  • AUijtdehaag
  • Registratie: Oktober 2006
  • Niet online
@Freek-Hendrik
Even de omvormer spanningsloos maken inderdaad (mag met de schakelaar aan de zijkant) en dan heel eventjes wachten (10 sec) met losmaken.
Daarna met een plat schroevendraaiertje aan 1 kant erin steken en stekker rustig lostrekken
Afbeeldingslocatie: https://tweakers.net/i/72ntQelBlZLHuOdcDxZwvm1m2dI=/232x232/filters:strip_icc():strip_exif()/f/image/9Ok7yF2rv9xxAtMCfgvSLNc9.jpg?f=fotoalbum_tileAfbeeldingslocatie: https://tweakers.net/i/ZXtJGuuCVT1IjPcNnxTrDF0aQeQ=/232x232/filters:strip_icc():strip_exif()/f/image/kj5Byzf85Tvim8kqStCq3A4o.jpg?f=fotoalbum_tile

PVOutput Github - Div ESP TK: MHI - Clack - Marstek


Acties:
  • 0 Henk 'm!

  • Tsurany
  • Registratie: Juni 2006
  • Niet online

Tsurany

⭐⭐⭐⭐⭐

Freek-Hendrik schreef op donderdag 9 juli 2020 @ 10:49:
[...]


Ik helaas niet :-(

[Afbeelding]

Welke versie van de modbus nodes en Node-RED gebruik jij? Ik heb de volgende:
Node-Red: v1.1.0
node-red-contrib-modbus: v4.1.3
node-red-contrib-modbustcp: v1.2.3
Ik zit nog op 0.20.8
node-red-contrib-modbus: 4.1.3

Als via de webinterface alles goed uit te lezen is dan lijkt mij een hardware fout uitgesloten. Heb je de laatste firmware op de omvormer geinstalleerd?

[ Voor 12% gewijzigd door Tsurany op 09-07-2020 12:52 ]

SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N


Acties:
  • 0 Henk 'm!

  • AOC
  • Registratie: September 2001
  • Niet online

AOC

edit:

heb het zelf al opgelost.

[ Voor 96% gewijzigd door AOC op 10-07-2020 22:53 ]


Acties:
  • 0 Henk 'm!

  • Freek-Hendrik
  • Registratie: Augustus 2005
  • Laatst online: 06-10-2024
Tsurany schreef op donderdag 9 juli 2020 @ 12:51:
[...]

Ik zit nog op 0.20.8
node-red-contrib-modbus: 4.1.3

Als via de webinterface alles goed uit te lezen is dan lijkt mij een hardware fout uitgesloten. Heb je de laatste firmware op de omvormer geinstalleerd?
Ik heb eerst de panelen op MPPT B gezet, zoals al een beetje verwacht maakte dat geen enkel verschil. Daarna de software geupgrade (afgaande op versienummer bepaald geen overbodige luxe), maar ook dat blijkt geen oplossing.
@Tsurany @AUijtdehaag nog andere suggesties?

Acties:
  • 0 Henk 'm!

  • CAD-tekenaar
  • Registratie: November 2008
  • Laatst online: 22:52
Weet iemand of ik via Node-Red via Telegram een message kan sturen die automatisch verdwijnt na X minuten of dat we een actie via Node-Red kunnen sturen die een specifiek bericht kan wissen?
Is dit mogelijk?

Acties:
  • 0 Henk 'm!

  • om3ega
  • Registratie: Maart 2001
  • Laatst online: 18-09 14:15
CAD-tekenaar schreef op vrijdag 10 juli 2020 @ 22:36:
Weet iemand of ik via Node-Red via Telegram een message kan sturen die automatisch verdwijnt na X minuten of dat we een actie via Node-Red kunnen sturen die een specifiek bericht kan wissen?
Is dit mogelijk?
Ja , als de Telegram API het toe laat is het zeker via Node Red mogelijk... net als berichten pinnen, versturen zonder geluid etc.. Je hoeft niet perse de telegram BOT te gebruiken hiervoor.

code:
1
https://api.telegram.org/botxxxxxxxx:jebotcode/sendMessage?chat_id=-chatidnr&disable_notification=TRUE&type=message&text="+encodeURI(msg.payload);


De Telegram API staat uitvoerig beschreven.
Als je een bericht plaatst , heeft dat bericht een messageID .. deze heb je nodig om dan weer dat specifieke bericht te verwijderen.

Berichten die automatische verwijderd worden is ook een onderdeel van de encrypted chat, maar in theorie zou dat ook mogelijk moeten zijn in een gewone chat.. als je met timers werkt.

[ Voor 9% gewijzigd door om3ega op 10-07-2020 23:09 ]


Acties:
  • 0 Henk 'm!

  • CAD-tekenaar
  • Registratie: November 2008
  • Laatst online: 22:52
om3ega schreef op vrijdag 10 juli 2020 @ 23:08:
[...]


Ja , als de Telegram API het toe laat is het zeker via Node Red mogelijk... net als berichten pinnen, versturen zonder geluid etc.. Je hoeft niet perse de telegram BOT te gebruiken hiervoor.

code:
1
https://api.telegram.org/botxxxxxxxx:jebotcode/sendMessage?chat_id=-chatidnr&disable_notification=TRUE&type=message&text="+encodeURI(msg.payload);


De Telegram API staat uitvoerig beschreven.
Als je een bericht plaatst , heeft dat bericht een messageID .. deze heb je nodig om dan weer dat specifieke bericht te verwijderen.

Berichten die automatische verwijderd worden is ook een onderdeel van de encrypted chat, maar in theorie zou dat ook mogelijk moeten zijn in een gewone chat.. als je met timers werkt.
Bedankt voor de snelle reactie. Ik dacht te lezen dat het alleen bij geheime chats kon gebeuren, en niet lukte met eigen gemaakte telegram-bots.
Verder snap ik je code niet. Kan je dit toelichten?

Acties:
  • 0 Henk 'm!

  • om3ega
  • Registratie: Maart 2001
  • Laatst online: 18-09 14:15
CAD-tekenaar schreef op vrijdag 10 juli 2020 @ 23:25:
[...]


Bedankt voor de snelle reactie. Ik dacht te lezen dat het alleen bij geheime chats kon gebeuren, en niet lukte met eigen gemaakte telegram-bots.
Verder snap ik je code niet. Kan je dit toelichten?
Ja, daar zit het standaard in , maar volgens mij kan je prima ook buiten de secret chat een bericht sturen, timen en daarna dat specifieke message ID weer verwijderen. Het kan handmatig , dus waarschijnlijk ook met de API.

Ik heb geen werkende flow voor je , maar als je een telegram BOT hebt, heb je een unique BOTID. Als je een kanaal hebt waar je bot in zit, heb je een chat_id en als je een bericht post met je BOT krijg je een message_id terug..

Met deze dingen kan je je flow weer voeden, timers er op zetten etc..
Je kan ook de telegram bot gebruiken (bijvoorbeeld deze : https://flows.nodered.org/node/node-red-contrib-telegrambot ) , maar zaken die je niet specifiek met de bot kan , zou je dan nog via een HTTP request node kunnen doen..

Acties:
  • 0 Henk 'm!

  • CAD-tekenaar
  • Registratie: November 2008
  • Laatst online: 22:52
om3ega schreef op vrijdag 10 juli 2020 @ 23:34:
[...]


Ja, daar zit het standaard in , maar volgens mij kan je prima ook buiten de secret chat een bericht sturen, timen en daarna dat specifieke message ID weer verwijderen. Het kan handmatig , dus waarschijnlijk ook met de API.

Ik heb geen werkende flow voor je , maar als je een telegram BOT hebt, heb je een unique BOTID. Als je een kanaal hebt waar je bot in zit, heb je een chat_id en als je een bericht post met je BOT krijg je een message_id terug..

Met deze dingen kan je je flow weer voeden, timers er op zetten etc..
Je kan ook de telegram bot gebruiken (bijvoorbeeld deze : https://flows.nodered.org/node/node-red-contrib-telegrambot ) , maar zaken die je niet specifiek met de bot kan , zou je dan nog via een HTTP request node kunnen doen..
Ik snap het nog niet helemaal, maar ik zal het onderzoeken.

Acties:
  • 0 Henk 'm!

  • Raider095
  • Registratie: November 2014
  • Laatst online: 02-11-2021
Achter mijn Telegram Sender node heb ik een functie die de msg.payload.sentMessageId in een globale variabele zet (omdat niet alles op hetzelfde tabblad wordt afgehandeld). Ik geef gebruikers namelijk via een /commando een paar opties (keyboard), als de keuze gemaakt is laat ik het keyboard verwijderen om de uiteindelijke gemaakte keuze te tonen;

code:
1
2
3
4
if (msg.payload.type == "message" && msg.payload.options.reply_markup !== null)
{
    global.set("LastMsgId_CMS", msg.payload.sentMessageId);
}


De andere functie, die het keyboard dus afvangt, doet zoiets :

code:
1
2
3
4
msg.payload.content = global.get("LastMsgId_CMS");
msg.payload.type = "deleteMessage";
node.send(msg);
global.set("LastMsgId_CMS", null);


En weg is het berichtje.

Zo heb ik meer (verschillende) Telegram nodes / bots die bepaalde berichten verwijderen en dat werkt uitstekend :)

Acties:
  • 0 Henk 'm!

  • KiefDelicious
  • Registratie: Januari 2009
  • Laatst online: 00:28
Beste medetweakers,

Ik heb sinds kort de Conbee 2, waarbij ik voorheen de Xiaomi gateway gebruikte probeer ik nu mijn automations (Node-Red) om te zetten naar de deConz connectie.

Nou is mijn kennis nog beperkt (pas net 1maand met Node-Red aan de gang). Maar loop ik dus vast op het volgende.

Ik heb een Xiaomi smart Button (die kleine ronde). Voorheen kon ik daarmee dimmen/brightnen (als ik de knop ingedrukt hield) via de (online gevonden) flow:

Afbeeldingslocatie: https://i.imgur.com/PThxYC8.png
https://www.reddit.com/r/...ghts_with_xiaomi_buttons/

Nu via deConz heb ik te maken met Home Assistant events, deze krijg ik op deze manier werkend in Node-Red (ik heb 2 xiaomi schakelaars).
Afbeeldingslocatie: https://tweakers.net/i/C0ByYXygRafsV-x3tBb76MZYMGk=/800x/filters:strip_exif()/f/image/2Ao8fACgwf3d9LGG2VrEqBaE.png?f=fotoalbum_large
(ik kan aan elke output van de switch nu bijv een lamp aan en uitzetten, maar veel verder kom ik niet.

Ik heb geprobeerd de Xiaomi Hub flow om te bouwen (bijv door de Hold State node aan het begin te vervangen met de Smart Button 2 node), maar loop hier compleet op vast. Ik zag de post van:
maar gezien mijn beperkte Node-Red kennis vraag ik jullie om hulp :P.

Ik heb dezelfde vraag in het Deconz topic gesteld, maar bedacht mij later dat eht natuurlijk een specifieke Node-Red vraag is.

Acties:
  • 0 Henk 'm!

  • DeadMetal
  • Registratie: Mei 2002
  • Laatst online: 19-09 13:19
KiefDelicious schreef op donderdag 16 juli 2020 @ 13:00:
Beste medetweakers,

Ik heb sinds kort de Conbee 2, waarbij ik voorheen de Xiaomi gateway gebruikte probeer ik nu mijn automations (Node-Red) om te zetten naar de deConz connectie.
Waarom kies je voor Deconz? Ik gebruik zelf de ZHA integratie in HA, dat scheelt weer een addon (en dus een afhankelijkheid tussen twee aan elkaar geknoopte systemen). Want als ik je screenshot zo zie, events zoals 1000 en 1001 afvangen, dat ziet er vrij complex uit.

Overigens merk ik ook dat bijv. een 'triple click' wel mogelijk is via de Xiaomi Gateway, maar niet via de Conbee of Zigbee2mqtt (wat ik eerst gebruikte, toen ik nog geen Conbee had).Ik ben voor mijn knoppen/sensoren van Xiaomi overigens nog niet afgestapt van de Gateway, staat nog op m'n lijstje.

[ Voor 6% gewijzigd door DeadMetal op 21-07-2020 08:09 ]


Acties:
  • 0 Henk 'm!

  • KiefDelicious
  • Registratie: Januari 2009
  • Laatst online: 00:28
DeadMetal schreef op dinsdag 21 juli 2020 @ 08:07:
[...]


Waarom kies je voor Deconz? Ik gebruik zelf de ZHA integratie in HA, dat scheelt weer een addon (en dus een afhankelijkheid tussen twee aan elkaar geknoopte systemen). Want als ik je screenshot zo zie, events zoals 1000 en 1001 afvangen, dat ziet er vrij complex uit.

Overigens merk ik ook dat bijv. een 'triple click' wel mogelijk is via de Xiaomi Gateway, maar niet via de Conbee of Zigbee2mqtt (wat ik eerst gebruikte, toen ik nog geen Conbee had).Ik ben voor mijn knoppen/sensoren van Xiaomi overigens nog niet afgestapt van de Gateway, staat nog op m'n lijstje.
Eigenlijk omdat ik in de veronderstelling was dat dat de beste keuze was (mede door device compatibiliteit). Ik ben van Domoticz naar HASS aan het migreren, en met DECONZ kan ik eventueel ook weer naar andere domotica systeem integreren. Maar ik zal eens beter kijken naar ZHA

Het afvangen van de events is wel gelukt, elke output op die switch is een actie. Dus de Hold actie is ook een losse output, nu wil ik daaraan dus koppelen dat bij activeren een lamp helder gaat branden, en bij nogmaals activeren een lamp zachter gaat branden. Uiteraard is dit een wat ingewikkeldere setup, als dat ik bijv bij 1x click de helderheid verhoog en bij 2x click de helderheid verlaag.

Acties:
  • 0 Henk 'm!

  • denuz
  • Registratie: Augustus 2006
  • Laatst online: 21:20
KiefDelicious schreef op dinsdag 21 juli 2020 @ 10:54:
[...]


Eigenlijk omdat ik in de veronderstelling was dat dat de beste keuze was (mede door device compatibiliteit). Ik ben van Domoticz naar HASS aan het migreren, en met DECONZ kan ik eventueel ook weer naar andere domotica systeem integreren.

Het afvangen van de events is wel gelukt, elke output op die switch is een actie. Dus de Hold actie is ook een losse output, nu wil ik daaraan dus koppelen dat bij activeren een lamp helder gaat branden, en bij nogmaals activeren een lamp zachter gaat branden. Uiteraard is dit een wat ingewikkeldere setup, als dat ik bijv bij 1x click de helderheid verhoog en bij 2x click de helderheid verlaag.
Ik heb het op 1 plek zo opgelost:
code:
1
[{"id":"e298d8ba.8ec11","type":"server-state-changed","z":"9840ade3.ef96c","name":"Kantoor knopje","server":"7152f269.c6a12c","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.0x00158d0002afe5b8_click","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"x":140,"y":1380,"wires":[["60814b81.ce1ca4"]]},{"id":"60814b81.ce1ca4","type":"switch","z":"9840ade3.ef96c","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"left","vt":"str"},{"t":"eq","v":"right","vt":"str"},{"t":"eq","v":"both","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":330,"y":1380,"wires":[["5aa6542e.1cff14"],["df2d6123.c12d3","eef92518.09eee"],["d32abb26.8bd038"]]},{"id":"df2d6123.c12d3","type":"time-range-switch","z":"9840ade3.ef96c","name":"","lat":"52.01667","lon":" 4.70833","startTime":"sunset","endTime":"sunrise","startOffset":"-15","endOffset":"+30","x":680,"y":1380,"wires":[["3f9e337e.f5aabc"],["d1d47064.e15b9"]]},{"id":"3f9e337e.f5aabc","type":"api-call-service","z":"9840ade3.ef96c","name":"kantoor 20%","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.kantoor_spotjes","data":"{\"brightness_pct\":20}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1010,"y":1340,"wires":[[]]},{"id":"d1d47064.e15b9","type":"api-call-service","z":"9840ade3.ef96c","name":"kantoor 80 %","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.kantoor_spotjes","data":"{\"brightness_pct\":80}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1010,"y":1440,"wires":[[]]},{"id":"d32abb26.8bd038","type":"api-call-service","z":"9840ade3.ef96c","name":"kantoor uit","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_off","entityId":"light.kantoor_spotjes","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":810,"y":1500,"wires":[[]]},{"id":"5aa6542e.1cff14","type":"api-current-state","z":"9840ade3.ef96c","name":"Enabled?","server":"7152f269.c6a12c","version":1,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"light.kantoor_spotjes","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":480,"y":1280,"wires":[["1ce9dad4.b0d5fd"],["df2d6123.c12d3"]]},{"id":"1ce9dad4.b0d5fd","type":"api-render-template","z":"9840ade3.ef96c","name":"Get new light setting","server":"7152f269.c6a12c","template":"{{ [state_attr('light.kantoor_spotjes', 'brightness') + 25]}}","resultsLocation":"payload","resultsLocationType":"msg","templateLocation":"template","templateLocationType":"msg","x":760,"y":1260,"wires":[["d7c1e23e.54a2c"]]},{"id":"d7c1e23e.54a2c","type":"api-call-service","z":"9840ade3.ef96c","name":"Increase light","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.kantoor_spotjes","data":"{\"brightness\":\"{{ payload }}\"}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1020,"y":1220,"wires":[[]]},{"id":"eef92518.09eee","type":"trigger","z":"9840ade3.ef96c","name":"","op1":"","op2":"off","op1type":"nul","op2type":"str","duration":"60","extend":false,"units":"s","reset":"right","bytopic":"all","outputs":1,"x":530,"y":1480,"wires":[["d32abb26.8bd038"]]},{"id":"7152f269.c6a12c","type":"server","z":"","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]

Je zou ook nog kunnen kijken naar de brightness_step functie. Zie hier.

Die heb ik ook in gebruik, op deze manier:
code:
1
[{"id":"f4a239f5.a58ad8","type":"server-state-changed","z":"9840ade3.ef96c","name":"Badkamer","server":"7152f269.c6a12c","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.0x00158d000186dfaa_click","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"x":100,"y":220,"wires":[["4a3059f6.e433e8"]]},{"id":"4a3059f6.e433e8","type":"switch","z":"9840ade3.ef96c","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"single","vt":"str"},{"t":"eq","v":"double","vt":"str"},{"t":"eq","v":"long","vt":"str"},{"t":"eq","v":"triple","vt":"str"}],"checkall":"true","repair":false,"outputs":4,"x":250,"y":220,"wires":[["71e2194.c4bcfe8"],["6ca357a5.3ecb28"],["deef46c1.1c03e8"],["557a8317.21de3c"]]},{"id":"deef46c1.1c03e8","type":"api-call-service","z":"9840ade3.ef96c","name":"Licht uit","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_off","entityId":"light.badkamer_spotjes_bad","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":440,"y":280,"wires":[[]]},{"id":"49d46dba.cc9d34","type":"api-call-service","z":"9840ade3.ef96c","name":"20pct","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.badkamer_spotjes_bad","data":"{\"brightness_pct\":20}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":970,"y":60,"wires":[[]]},{"id":"3535d144.e82d8e","type":"api-call-service","z":"9840ade3.ef96c","name":"85pct","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.badkamer_spotjes_bad","data":"{\"brightness_pct\":50}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":970,"y":120,"wires":[[]]},{"id":"eb74912f.3eb2c","type":"time-range-switch","z":"9840ade3.ef96c","name":"","lat":"52.01667","lon":" 4.70833","startTime":"sunset","endTime":"sunrise","startOffset":"-15","endOffset":"+30","x":660,"y":80,"wires":[["49d46dba.cc9d34"],["3535d144.e82d8e"]]},{"id":"557a8317.21de3c","type":"api-call-service","z":"9840ade3.ef96c","name":"Ventilatie toggle","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"switch","service":"toggle","entityId":"switch.sonoff_badkamerventilatie","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":460,"y":340,"wires":[[]]},{"id":"71e2194.c4bcfe8","type":"api-current-state","z":"9840ade3.ef96c","name":"Licht uit","server":"7152f269.c6a12c","version":1,"outputs":2,"halt_if":"off","halt_if_type":"num","halt_if_compare":"is","override_topic":false,"entity_id":"light.badkamer_spotjes_bad","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":400,"y":120,"wires":[["eb74912f.3eb2c"],["e21eeefd.2133e"]]},{"id":"e21eeefd.2133e","type":"api-call-service","z":"9840ade3.ef96c","name":"Step 25 hoger","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.badkamer_spotjes_bad","data":"{\"brightness_step\":25}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":980,"y":180,"wires":[[]]},{"id":"5ce85174.74f0f","type":"api-call-service","z":"9840ade3.ef96c","name":"Step 25 lager","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.badkamer_spotjes_bad","data":"{\"brightness_step\":-25}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":690,"y":260,"wires":[[]]},{"id":"6ca357a5.3ecb28","type":"api-current-state","z":"9840ade3.ef96c","name":"Licht uit","server":"7152f269.c6a12c","version":1,"outputs":2,"halt_if":"off","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"light.badkamer_spotjes_bad","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":420,"y":200,"wires":[["f4b4158a.0962a8"],["5ce85174.74f0f"]]},{"id":"f4b4158a.0962a8","type":"api-call-service","z":"9840ade3.ef96c","name":"85pct","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.badkamer_spotjes_bad","data":"{\"brightness_pct\":85}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":670,"y":200,"wires":[[]]},{"id":"7152f269.c6a12c","type":"server","z":"","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]


@DeadMetal

Met zigbee2mqtt heb je wel meerdere opties voor de buttons. Namelijk; single, double, triple, quadruple, many, long, long_release click. Zie hier.

Acties:
  • 0 Henk 'm!

  • DeadMetal
  • Registratie: Mei 2002
  • Laatst online: 19-09 13:19
denuz schreef op dinsdag 21 juli 2020 @ 11:15:
[...]
Met zigbee2mqtt heb je wel meerdere opties voor de buttons. Namelijk; single, double, triple, quadruple, many, long, long_release click. Zie hier.
Ja, in theorie wel. Maar als ik triple-klikte, registreerde Z2Mqtt niks. De gateway wel. :/
Maar het verschilt ook per model, mijn nieuwste knop registreert sowieso geen triple click via beide methoden.

Acties:
  • 0 Henk 'm!

  • KiefDelicious
  • Registratie: Januari 2009
  • Laatst online: 00:28
denuz schreef op dinsdag 21 juli 2020 @ 11:15:
[...]


Ik heb het op 1 plek zo opgelost:
code:
1
[{"id":"e298d8ba.8ec11","type":"server-state-changed","z":"9840ade3.ef96c","name":"Kantoor knopje","server":"7152f269.c6a12c","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.0x00158d0002afe5b8_click","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"x":140,"y":1380,"wires":[["60814b81.ce1ca4"]]},{"id":"60814b81.ce1ca4","type":"switch","z":"9840ade3.ef96c","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"left","vt":"str"},{"t":"eq","v":"right","vt":"str"},{"t":"eq","v":"both","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":330,"y":1380,"wires":[["5aa6542e.1cff14"],["df2d6123.c12d3","eef92518.09eee"],["d32abb26.8bd038"]]},{"id":"df2d6123.c12d3","type":"time-range-switch","z":"9840ade3.ef96c","name":"","lat":"52.01667","lon":" 4.70833","startTime":"sunset","endTime":"sunrise","startOffset":"-15","endOffset":"+30","x":680,"y":1380,"wires":[["3f9e337e.f5aabc"],["d1d47064.e15b9"]]},{"id":"3f9e337e.f5aabc","type":"api-call-service","z":"9840ade3.ef96c","name":"kantoor 20%","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.kantoor_spotjes","data":"{\"brightness_pct\":20}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1010,"y":1340,"wires":[[]]},{"id":"d1d47064.e15b9","type":"api-call-service","z":"9840ade3.ef96c","name":"kantoor 80 %","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.kantoor_spotjes","data":"{\"brightness_pct\":80}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1010,"y":1440,"wires":[[]]},{"id":"d32abb26.8bd038","type":"api-call-service","z":"9840ade3.ef96c","name":"kantoor uit","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_off","entityId":"light.kantoor_spotjes","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":810,"y":1500,"wires":[[]]},{"id":"5aa6542e.1cff14","type":"api-current-state","z":"9840ade3.ef96c","name":"Enabled?","server":"7152f269.c6a12c","version":1,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"light.kantoor_spotjes","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":480,"y":1280,"wires":[["1ce9dad4.b0d5fd"],["df2d6123.c12d3"]]},{"id":"1ce9dad4.b0d5fd","type":"api-render-template","z":"9840ade3.ef96c","name":"Get new light setting","server":"7152f269.c6a12c","template":"{{ [state_attr('light.kantoor_spotjes', 'brightness') + 25]}}","resultsLocation":"payload","resultsLocationType":"msg","templateLocation":"template","templateLocationType":"msg","x":760,"y":1260,"wires":[["d7c1e23e.54a2c"]]},{"id":"d7c1e23e.54a2c","type":"api-call-service","z":"9840ade3.ef96c","name":"Increase light","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.kantoor_spotjes","data":"{\"brightness\":\"{{ payload }}\"}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1020,"y":1220,"wires":[[]]},{"id":"eef92518.09eee","type":"trigger","z":"9840ade3.ef96c","name":"","op1":"","op2":"off","op1type":"nul","op2type":"str","duration":"60","extend":false,"units":"s","reset":"right","bytopic":"all","outputs":1,"x":530,"y":1480,"wires":[["d32abb26.8bd038"]]},{"id":"7152f269.c6a12c","type":"server","z":"","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]

Je zou ook nog kunnen kijken naar de brightness_step functie. Zie hier.

Die heb ik ook in gebruik, op deze manier:
code:
1
[{"id":"f4a239f5.a58ad8","type":"server-state-changed","z":"9840ade3.ef96c","name":"Badkamer","server":"7152f269.c6a12c","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.0x00158d000186dfaa_click","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"x":100,"y":220,"wires":[["4a3059f6.e433e8"]]},{"id":"4a3059f6.e433e8","type":"switch","z":"9840ade3.ef96c","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"single","vt":"str"},{"t":"eq","v":"double","vt":"str"},{"t":"eq","v":"long","vt":"str"},{"t":"eq","v":"triple","vt":"str"}],"checkall":"true","repair":false,"outputs":4,"x":250,"y":220,"wires":[["71e2194.c4bcfe8"],["6ca357a5.3ecb28"],["deef46c1.1c03e8"],["557a8317.21de3c"]]},{"id":"deef46c1.1c03e8","type":"api-call-service","z":"9840ade3.ef96c","name":"Licht uit","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_off","entityId":"light.badkamer_spotjes_bad","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":440,"y":280,"wires":[[]]},{"id":"49d46dba.cc9d34","type":"api-call-service","z":"9840ade3.ef96c","name":"20pct","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.badkamer_spotjes_bad","data":"{\"brightness_pct\":20}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":970,"y":60,"wires":[[]]},{"id":"3535d144.e82d8e","type":"api-call-service","z":"9840ade3.ef96c","name":"85pct","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.badkamer_spotjes_bad","data":"{\"brightness_pct\":50}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":970,"y":120,"wires":[[]]},{"id":"eb74912f.3eb2c","type":"time-range-switch","z":"9840ade3.ef96c","name":"","lat":"52.01667","lon":" 4.70833","startTime":"sunset","endTime":"sunrise","startOffset":"-15","endOffset":"+30","x":660,"y":80,"wires":[["49d46dba.cc9d34"],["3535d144.e82d8e"]]},{"id":"557a8317.21de3c","type":"api-call-service","z":"9840ade3.ef96c","name":"Ventilatie toggle","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"switch","service":"toggle","entityId":"switch.sonoff_badkamerventilatie","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":460,"y":340,"wires":[[]]},{"id":"71e2194.c4bcfe8","type":"api-current-state","z":"9840ade3.ef96c","name":"Licht uit","server":"7152f269.c6a12c","version":1,"outputs":2,"halt_if":"off","halt_if_type":"num","halt_if_compare":"is","override_topic":false,"entity_id":"light.badkamer_spotjes_bad","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":400,"y":120,"wires":[["eb74912f.3eb2c"],["e21eeefd.2133e"]]},{"id":"e21eeefd.2133e","type":"api-call-service","z":"9840ade3.ef96c","name":"Step 25 hoger","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.badkamer_spotjes_bad","data":"{\"brightness_step\":25}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":980,"y":180,"wires":[[]]},{"id":"5ce85174.74f0f","type":"api-call-service","z":"9840ade3.ef96c","name":"Step 25 lager","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.badkamer_spotjes_bad","data":"{\"brightness_step\":-25}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":690,"y":260,"wires":[[]]},{"id":"6ca357a5.3ecb28","type":"api-current-state","z":"9840ade3.ef96c","name":"Licht uit","server":"7152f269.c6a12c","version":1,"outputs":2,"halt_if":"off","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"light.badkamer_spotjes_bad","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":420,"y":200,"wires":[["f4b4158a.0962a8"],["5ce85174.74f0f"]]},{"id":"f4b4158a.0962a8","type":"api-call-service","z":"9840ade3.ef96c","name":"85pct","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.badkamer_spotjes_bad","data":"{\"brightness_pct\":85}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":670,"y":200,"wires":[[]]},{"id":"7152f269.c6a12c","type":"server","z":"","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]


@DeadMetal

Met zigbee2mqtt heb je wel meerdere opties voor de buttons. Namelijk; single, double, triple, quadruple, many, long, long_release click. Zie hier.
Thx, je gebruikt dan idd voor 1 actie (bijv 1x drukken) lamp helder zetten en andere actie (bijv 2x drukken) lamp dimmen. Is idd ook een prima optie, iets minder mooi, maar gelukkig zijn er genoeg acties over op dezelfde knop om verder nog wat mee te doen.

Acties:
  • 0 Henk 'm!

  • denuz
  • Registratie: Augustus 2006
  • Laatst online: 21:20
KiefDelicious schreef op dinsdag 21 juli 2020 @ 11:56:
[...]


Thx, je gebruikt dan idd voor 1 actie (bijv 1x drukken) lamp helder zetten en andere actie (bijv 2x drukken) lamp dimmen. Is idd ook een prima optie, iets minder mooi, maar gelukkig zijn er genoeg acties over op dezelfde knop om verder nog wat mee te doen.
Inderdaad.

Jij wilt dus; als je voor de eerste keer op de knop klikt een bepaalde actie. En als je vervolgens binnen een seconde nog een keer op dezelfde knop klik een andere actie?

Of wil je als je 2 keer binnen 1 seconde op 1 knop klikt een andere actie? Mij is nog niet helemaal duidelijk wat je exact probeert te bereiken.

Acties:
  • 0 Henk 'm!

  • KiefDelicious
  • Registratie: Januari 2009
  • Laatst online: 00:28
denuz schreef op dinsdag 21 juli 2020 @ 13:07:
[...]

Inderdaad.

Jij wilt dus; als je voor de eerste keer op de knop klikt een bepaalde actie. En als je vervolgens binnen een seconde nog een keer op dezelfde knop klik een andere actie?

Of wil je als je 2 keer binnen 1 seconde op 1 knop klikt een andere actie? Mij is nog niet helemaal duidelijk wat je exact probeert te bereiken.
Ah, ok, in mijn huidige setup (via Xiaomi gateway die Node-Red flow in mijn eerste post) druk ik op de knop en houd hem ingedrukt. Dan gaat de lamp aan en steeds harder branden totdat ik de knop los laat (dan blijft hij op de lichtsterkte staan waarbij ik de knop los liet). Als ik hem dan nog eens indruk en vasthoud, gaat hij zachter branden, totdat hij uitgaat (of dat ik de knop los laat). Nu krijg ik via Deconz losse events binnen, bijv 1 voor Hold en 1 voor Hold Release.

Acties:
  • +1 Henk 'm!

  • denuz
  • Registratie: Augustus 2006
  • Laatst online: 21:20
KiefDelicious schreef op dinsdag 21 juli 2020 @ 14:10:
[...]


Ah, ok, in mijn huidige setup (via Xiaomi gateway die Node-Red flow in mijn eerste post) druk ik op de knop en houd hem ingedrukt. Dan gaat de lamp aan en steeds harder branden totdat ik de knop los laat (dan blijft hij op de lichtsterkte staan waarbij ik de knop los liet). Als ik hem dan nog eens indruk en vasthoud, gaat hij zachter branden, totdat hij uitgaat (of dat ik de knop los laat). Nu krijg ik via Deconz losse events binnen, bijv 1 voor Hold en 1 voor Hold Release.
In dat geval zou ik zoiets doen;
code:
1
[{"id":"8a449fe1.7696","type":"switch","z":"fa2dc1ff.f1b9f","name":"check button action","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"long","vt":"str"},{"t":"eq","v":"long_release","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":250,"y":260,"wires":[["abd7acd7.b978a"],["a442afa2.8a90a","1a71b2e5.77635d"]]},{"id":"a442afa2.8a90a","type":"trigger","z":"fa2dc1ff.f1b9f","name":"","op1":"","op2":"0","op1type":"pay","op2type":"str","duration":"-250","extend":false,"units":"ms","reset":"long_release","bytopic":"all","topic":"topic","outputs":1,"x":1040,"y":120,"wires":[["fee339c2.315cd8"]]},{"id":"fee339c2.315cd8","type":"api-call-service","z":"fa2dc1ff.f1b9f","name":"Step 25 increase","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.0xec1bbdfffe544e37_light","data":"{\"brightness_step\":25}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1310,"y":120,"wires":[[]]},{"id":"1a71b2e5.77635d","type":"trigger","z":"fa2dc1ff.f1b9f","name":"","op1":"","op2":"0","op1type":"pay","op2type":"str","duration":"-250","extend":false,"units":"ms","reset":"long_release","bytopic":"all","topic":"topic","outputs":1,"x":1020,"y":320,"wires":[["41e537d8.8b98c8"]]},{"id":"41e537d8.8b98c8","type":"api-call-service","z":"fa2dc1ff.f1b9f","name":"Step 25 decrease","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.0xec1bbdfffe544e37_light","data":"{\"brightness_step\":-25}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1330,"y":320,"wires":[[]]},{"id":"e30f1a97.5a8b88","type":"switch","z":"fa2dc1ff.f1b9f","name":"","property":"topic","propertyType":"flow","rules":[{"t":"eq","v":"increase","vt":"str"},{"t":"eq","v":"decrease","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":830,"y":200,"wires":[["a442afa2.8a90a"],["1a71b2e5.77635d"]]},{"id":"abd7acd7.b978a","type":"switch","z":"fa2dc1ff.f1b9f","name":"check flow","property":"topic","propertyType":"flow","rules":[{"t":"eq","v":"increase","vt":"str"},{"t":"eq","v":"decrease","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":3,"x":450,"y":160,"wires":[["a3cb75ef.903288"],["a9431b29.f609c8"],["a9431b29.f609c8"]]},{"id":"a9431b29.f609c8","type":"change","z":"fa2dc1ff.f1b9f","name":"flow increase","rules":[{"t":"set","p":"topic","pt":"flow","to":"increase","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":670,"y":100,"wires":[["e30f1a97.5a8b88"]]},{"id":"a3cb75ef.903288","type":"change","z":"fa2dc1ff.f1b9f","name":"flow decrease","rules":[{"t":"set","p":"topic","pt":"flow","to":"decrease","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":660,"y":260,"wires":[["e30f1a97.5a8b88"]]},{"id":"7152f269.c6a12c","type":"server","z":"","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]


Afbeeldingslocatie: https://tweakers.net/i/i18LVKvkcUBPxS8Zypbk174qpvA=/800x/filters:strip_icc():strip_exif()/f/image/z8yAKaKoHqLDEtH5lx0IguUS.jpg?f=fotoalbum_large

Increase/decrease gaat dan om en om.

Acties:
  • 0 Henk 'm!

  • KiefDelicious
  • Registratie: Januari 2009
  • Laatst online: 00:28
denuz schreef op dinsdag 21 juli 2020 @ 16:01:
[...]


In dat geval zou ik zoiets doen;
code:
1
[{"id":"8a449fe1.7696","type":"switch","z":"fa2dc1ff.f1b9f","name":"check button action","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"long","vt":"str"},{"t":"eq","v":"long_release","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":250,"y":260,"wires":[["abd7acd7.b978a"],["a442afa2.8a90a","1a71b2e5.77635d"]]},{"id":"a442afa2.8a90a","type":"trigger","z":"fa2dc1ff.f1b9f","name":"","op1":"","op2":"0","op1type":"pay","op2type":"str","duration":"-250","extend":false,"units":"ms","reset":"long_release","bytopic":"all","topic":"topic","outputs":1,"x":1040,"y":120,"wires":[["fee339c2.315cd8"]]},{"id":"fee339c2.315cd8","type":"api-call-service","z":"fa2dc1ff.f1b9f","name":"Step 25 increase","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.0xec1bbdfffe544e37_light","data":"{\"brightness_step\":25}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1310,"y":120,"wires":[[]]},{"id":"1a71b2e5.77635d","type":"trigger","z":"fa2dc1ff.f1b9f","name":"","op1":"","op2":"0","op1type":"pay","op2type":"str","duration":"-250","extend":false,"units":"ms","reset":"long_release","bytopic":"all","topic":"topic","outputs":1,"x":1020,"y":320,"wires":[["41e537d8.8b98c8"]]},{"id":"41e537d8.8b98c8","type":"api-call-service","z":"fa2dc1ff.f1b9f","name":"Step 25 decrease","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.0xec1bbdfffe544e37_light","data":"{\"brightness_step\":-25}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1330,"y":320,"wires":[[]]},{"id":"e30f1a97.5a8b88","type":"switch","z":"fa2dc1ff.f1b9f","name":"","property":"topic","propertyType":"flow","rules":[{"t":"eq","v":"increase","vt":"str"},{"t":"eq","v":"decrease","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":830,"y":200,"wires":[["a442afa2.8a90a"],["1a71b2e5.77635d"]]},{"id":"abd7acd7.b978a","type":"switch","z":"fa2dc1ff.f1b9f","name":"check flow","property":"topic","propertyType":"flow","rules":[{"t":"eq","v":"increase","vt":"str"},{"t":"eq","v":"decrease","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":3,"x":450,"y":160,"wires":[["a3cb75ef.903288"],["a9431b29.f609c8"],["a9431b29.f609c8"]]},{"id":"a9431b29.f609c8","type":"change","z":"fa2dc1ff.f1b9f","name":"flow increase","rules":[{"t":"set","p":"topic","pt":"flow","to":"increase","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":670,"y":100,"wires":[["e30f1a97.5a8b88"]]},{"id":"a3cb75ef.903288","type":"change","z":"fa2dc1ff.f1b9f","name":"flow decrease","rules":[{"t":"set","p":"topic","pt":"flow","to":"decrease","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":660,"y":260,"wires":[["e30f1a97.5a8b88"]]},{"id":"7152f269.c6a12c","type":"server","z":"","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]


[Afbeelding]

Increase/decrease gaat dan om en om.
thx, ga er mee spelen!

EDIT:
@denuz, ik heb het werkend! super fijn. Nog wel een vraagje, want het werkt nu alleen als ik de payload verander van de release actie ("set.msg.payload" change node). Voor de duidelijkheid screenshot toegevoegd:
Afbeeldingslocatie: https://tweakers.net/i/etspRosa1YDEGQmIgGVGNnzKG_M=/800x/filters:strip_exif()/f/image/wY1uuD7DRDcFPqk6WYCMXDbT.png?f=fotoalbum_large

In het debug venster zie je bovenste output is direct uit de Smart Switch, en onderste dus uit de change node.

Ik heb het hiermee werkend, maar kreeg het niet voor elkaar om de reset trigger van de de "resend every 250ms" node op basis van de payload direct uit te Smart switch 2 te activeren.
Payload Smart Switch
code:
1
{"event_type":"deconz_event","event":{"id":"smart_switch_2","unique_id":"00:15:8d:00:01:d8:e0:31","event":1003}}


Ik doe waarschijnlijk iets verkeerd, want als ik beide payloads bekijk:
Volledige message uit debug node (werkend):
code:
1
{"event_type":"deconz_event","topic":"deconz_event","payload":"long_release","_msgid":"7f81825b.4326bc"}


Volledige message uit debug node (niet werkend)
code:
1
{"event_type":"deconz_event","topic":"deconz_event","payload":{"event_type":"deconz_event","event":{"id":"smart_switch_2","unique_id":"00:15:8d:00:01:d8:e0:31","event":1003}},"_msgid":"3368bc13.c4cbc4"}


In de trigger node plak ik dus de payload uit de smart switch voor de reset, maar dat pakt die niet. Als ik het woord long_release gebruik werkt het wel.

[ Voor 19% gewijzigd door KiefDelicious op 21-07-2020 18:48 ]


Acties:
  • +1 Henk 'm!

  • denuz
  • Registratie: Augustus 2006
  • Laatst online: 21:20
KiefDelicious schreef op dinsdag 21 juli 2020 @ 17:05:
[...]

thx, ga er mee spelen!

EDIT:
@denuz, ik heb het werkend! super fijn. Nog wel een vraagje, want het werkt nu alleen als ik de payload verander van de release actie ("set.msg.payload" change node). Voor de duidelijkheid screenshot toegevoegd:
[Afbeelding]

In het debug venster zie je bovenste output is direct uit de Smart Switch, en onderste dus uit de change node.

Ik heb het hiermee werkend, maar kreeg het niet voor elkaar om de reset trigger van de de "resend every 250ms" node op basis van de payload direct uit te Smart switch 2 te activeren.
Payload Smart Switch
code:
1
{"event_type":"deconz_event","event":{"id":"smart_switch_2","unique_id":"00:15:8d:00:01:d8:e0:31","event":1003}}


Ik doe waarschijnlijk iets verkeerd, want als ik beide payloads bekijk:
Volledige message uit debug node (werkend):
code:
1
{"event_type":"deconz_event","topic":"deconz_event","payload":"long_release","_msgid":"7f81825b.4326bc"}


Volledige message uit debug node (niet werkend)
code:
1
{"event_type":"deconz_event","topic":"deconz_event","payload":{"event_type":"deconz_event","event":{"id":"smart_switch_2","unique_id":"00:15:8d:00:01:d8:e0:31","event":1003}},"_msgid":"3368bc13.c4cbc4"}


In de trigger node plak ik dus de payload uit de smart switch voor de reset, maar dat pakt die niet. Als ik het woord long_release gebruik werkt het wel.
Ik gebruik geen Deconz maar zigbee2mqtt (en als ik dit zo zie ben ik daar heel blij mee).

Ik ben verder ook geen Node-red pro oid. Als het werkt dan werkt het, 1 change node meer of minder maakt mij niet zoveel uit :)

Acties:
  • +1 Henk 'm!

  • KiefDelicious
  • Registratie: Januari 2009
  • Laatst online: 00:28
denuz schreef op dinsdag 21 juli 2020 @ 22:30:
[...]

Ik gebruik geen Deconz maar zigbee2mqtt (en als ik dit zo zie ben ik daar heel blij mee).

Ik ben verder ook geen Node-red pro oid. Als het werkt dan werkt het, 1 change node meer of minder maakt mij niet zoveel uit :)
Thx, ik heb het nu helemaal voor elkaar. Werkt perfect!

Acties:
  • 0 Henk 'm!

  • DeadMetal
  • Registratie: Mei 2002
  • Laatst online: 19-09 13:19
Voor wie net als ik gebruik maakt van HA i.c.m. een RFXCom, maar de automatiseringen door NR laat doen, let erop dat vanaf HA 0.1113 het rfxtrx component enorm op de schop is gegaan.

Qua hoe je het in HA moet opzetten, zie de berichten vanaf hier

Maar ook qua wat je in NR ziet / moet doen. Normaal ving ik.e.e.a. af via een events:all node in NR die ik filterde op type event 'button_pressed'. Dat is nu vervangen door het type 'rfxtrx_event'

Het soort apparaat vind je nu onder 'payload.event.id_string' en dat bevat niet meer het device/entity_id wat het in HA heeft, maar een andere (wel unieke) waarde.

En de payload is nu On of Off in plaats van on / off en staat niet meer in payload.event.state maar in payload.event.values.Command

Succes :+

[ Voor 3% gewijzigd door DeadMetal op 23-07-2020 16:13 ]


Acties:
  • +1 Henk 'm!

  • denuz
  • Registratie: Augustus 2006
  • Laatst online: 21:20
sOid schreef op vrijdag 24 juli 2020 @ 16:38:
[...]

Da's een leuke. Kun je de code delen? (Wellicht meer op z'n plek ik het NodeRED-topic!)
Bij deze;
code:
1
[{"id":"6657128b.aa8694","type":"api-call-service","z":"bdc56d32.cdc1a8","name":"Set theme","server":"7152f269.c6a12c","version":1,"debugenabled":false,"service_domain":"frontend","service":"set_theme","entityId":"","data":"{\"name\":\"{{payload}}\"}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":970,"y":740,"wires":[[]]},{"id":"7f9fb645.86435","type":"server-state-changed","z":"bdc56d32.cdc1a8","name":"Sunset","server":"7152f269.c6a12c","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sun.sun","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"x":110,"y":760,"wires":[["cf241025.be20d8"]]},{"id":"cf241025.be20d8","type":"switch","z":"bdc56d32.cdc1a8","name":"Sun check","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"above_horizon","vt":"str"},{"t":"eq","v":"below_horizon","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":450,"y":760,"wires":[["6ea88b1c.51ee94"],["29ece650.5cd1e2"]]},{"id":"29ece650.5cd1e2","type":"change","z":"bdc56d32.cdc1a8","name":"Google Dark Theme","rules":[{"t":"set","p":"payload","pt":"msg","to":"Google Dark Theme","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":660,"y":800,"wires":[["6657128b.aa8694"]]},{"id":"6ea88b1c.51ee94","type":"change","z":"bdc56d32.cdc1a8","name":"Google Light Theme","rules":[{"t":"set","p":"payload","pt":"msg","to":"Google Light Theme","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":660,"y":720,"wires":[["6657128b.aa8694"]]},{"id":"fcc07cb6.565878","type":"server-state-changed","z":"bdc56d32.cdc1a8","name":"Uptime","server":"7152f269.c6a12c","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.ha_runtime","entityidfiltertype":"exact","outputinitially":false,"state_type":"num","haltifstate":"1","halt_if_type":"num","halt_if_compare":"lte","outputs":2,"output_only_on_state_change":true,"x":110,"y":660,"wires":[["177a0119.461477"],[]]},{"id":"177a0119.461477","type":"api-current-state","z":"bdc56d32.cdc1a8","name":"Sun state","server":"7152f269.c6a12c","version":1,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"sun.sun","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":320,"y":660,"wires":[["cf241025.be20d8"]]},{"id":"7152f269.c6a12c","type":"server","z":"","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]


Hiervoor heb je nog wel een extra sensor nodig in Home Assistant.

code:
1
2
3
4
sensor uptime:
  - platform: uptime
    name: "HA Runtime"
    unit_of_measurement: minutes



Afbeeldingslocatie: https://tweakers.net/i/ivYUE1JmT4ulXHL4Mlb5ubEV2hM=/800x/filters:strip_exif()/f/image/e2cylLWO0npBVlXOqzkqFhNY.png?f=fotoalbum_large
Pagina: 1 ... 13 ... 32 Laatste