ik gebruik de homewizard P1 meter, maar de "slimme meter" van de netbeheerder geeft 1 keer per 10 seconden een update, als ik die net gemist heb dan loop ik met loxone ~15 seconden achter. dan gaat het lastig worden om een beetje meet de vraag en het aanbod mee te bewegen (heb meerdere PV omvormers, EV, batterijen, quooker etc.) de reactietijd zou onder de 5 seconden moeten om het netjes te houden
@HiBe Dat probleem snap ik, maar dat ligt in dit geval aan de bron (de meter van de netbeheerder). Als je een 3-fase meter er tussen zet, poll je die rechtstreeks en krijg je gewoon de actuele waarde op dat moment. En dat zou dan ook die van HomeWizard kunnen zijn.
[ Voor 10% gewijzigd door JanHenk op 05-05-2026 19:36 ]
vw id.7 tourer pro s | evcc | holtkamper aero | fiscalist & prutser
Je kunt met de Programma functieblok de beperking van 10 seconden pollen omzeilen. Kwestie van programmeren en testen op betrouwbaarheid.
@HiBe zoveel korting krijgt een partner niet, tientjes werk voor zo'n meter.
@HiBe zoveel korting krijgt een partner niet, tientjes werk voor zo'n meter.
Interessant, ik wist niet dat dit kon. Hoe werkt dit? heb je daar misschien een voorbeeld van?mgizmo schreef op dinsdag 5 mei 2026 @ 19:42:
Je kunt met de Programma functieblok de beperking van 10 seconden pollen omzeilen. Kwestie van programmeren en testen op betrouwbaarheid.
Zeker, ik gebruikte deze code voor het uitlezen van ClimaControl: Slimme besturing voor airco'sHiBe schreef op dinsdag 5 mei 2026 @ 19:52:
[...]
Interessant, ik wist niet dat dit kon. Hoe werkt dit? heb je daar misschien een voorbeeld van?
code:
Hierbij het doc naar de functies: https://www.loxone.com/de...stomScriptProgramming.pdf1
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
| // *** PROGRAM DISABLED ***
// This PicoC program caused an error.
// Please find and correct the error and remove these three comment lines to enable this PicoC program again.
// READ FROM HEATPUMP
char *host = "10.10.0.130"; // IP Heatpump
char *page = "/control"; // API Endpoint
int GetPowerValue(char *json) { // Parse the value from the JSON and return an integer
int ivalue = 0;
char *rawvalue = strstrskip(json, "power\": \"");
char *value = calloc(1, 10);
strncpy(value, rawvalue, 2);
if (strcmp(value, "of") == 0) { ivalue = 0; } // Power value is OFF
if (strcmp(value, "on") == 0) { ivalue = 1; } // Power value is ON
return ivalue;
}
int GetModeValue(char *json) {
int ivalue = 0;
char *rawvalue = strstrskip(json, "mode\": \"");
char *value = calloc(1, 10);
strncpy(value, rawvalue, 3);
if (strcmp(value, "aut") == 0) { ivalue = 0; }
if (strcmp(value, "coo") == 0) { ivalue = 1; }
if (strcmp(value, "fan") == 0) { ivalue = 2; }
if (strcmp(value, "dry") == 0) { ivalue = 3; }
if (strcmp(value, "hea") == 0) { ivalue = 4; }
return ivalue;
}
int GetFanValue(char *json) {
int ivalue = 0;
char *rawvalue = strstrskip(json, "fan\": \"");
char *value = calloc(1, 10);
strncpy(value, rawvalue, 1);
if (strcmp(value, "a") == 0) { ivalue = 0; } // Fan value is Auto
if (strcmp(value, "1") == 0) { ivalue = 1; }
if (strcmp(value, "2") == 0) { ivalue = 2; }
if (strcmp(value, "3") == 0) { ivalue = 3; }
if (strcmp(value, "4") == 0) { ivalue = 4; }
if (strcmp(value, "5") == 0) { ivalue = 5; }
return ivalue;
}
int GetVaneValue(char *json) {
int ivalue = 0;
char *rawvalue = strstrskip(json, "vane\": \"");
char *value = calloc(1, 10);
strncpy(value, rawvalue, 1);
if (strcmp(value, "a") == 0) { ivalue = 0; } // Vane value is Auto
if (strcmp(value, "1") == 0) { ivalue = 1; }
if (strcmp(value, "2") == 0) { ivalue = 2; }
if (strcmp(value, "3") == 0) { ivalue = 3; }
if (strcmp(value, "4") == 0) { ivalue = 4; }
if (strcmp(value, "5") == 0) { ivalue = 5; }
if (strcmp(value, "S") == 0) { ivalue = 6; } // Vane value is Swing
return ivalue;
}
float GetTempValue(char *json) {
float fvalue = 0;
char *rawval = strstrskip(json, "set_temperature\": ");
char *val = calloc(1, 10);
strncpy(val, rawval, 4);
fvalue = batof(val);
return fvalue;
}
float GetOutdoorTempValue(char *json) {
float fvalue = 0;
char *rawval = strstrskip(json, "outdoor\": ");
char *val = calloc(1, 10);
strncpy(val, rawval, 4);
fvalue = batof(val);
return fvalue;
}
float GetRoomTempValue(char *json) {
float fvalue = 0;
char *rawval = strstrskip(json, "actual_temperature\": ");
char *val = calloc(1, 10);
strncpy(val, rawval, 4);
fvalue = batof(val);
return fvalue;
}
float GetRoomHumidityValue(char *json) {
float fvalue = 0;
char *rawval = strstrskip(json, "hact\": ");
char *val = calloc(1, 10);
strncpy(val, rawval, 4);
fvalue = batof(val);
return fvalue;
}
while(TRUE) { // keep looping until all the inputs match the set values in the HP
char *result = httpget(host, page); // read JSON from HP
int HPsetPower = GetPowerValue(result); // extract power value from JSON
setoutput(0,HPsetPower);
int HPsetMode = GetModeValue(result);
setoutput(1,HPsetMode);
int HPsetFan = GetFanValue(result);
setoutput(2,HPsetFan);
int HPsetVane = GetVaneValue(result);
setoutput(3,HPsetVane);
float HPsetTemp = GetTempValue(result);
setoutput(4,HPsetTemp);
float HPgetRoomTemp = GetRoomTempValue(result);
setoutput(5,HPgetRoomTemp);
float HPgetRoomHumidity = GetRoomHumidityValue(result);
setoutput(6,HPgetRoomHumidity);
float HPgetOutdoorTemp = GetOutdoorTempValue(result);
setoutput(7,HPgetOutdoorTemp);
sleep(10000);
} |
En functieblok: https://www.loxone.com/enen/kb/custom-script-programming/
Edit: Heb de eerste drie comment regels dus in de gaten. De code crashte bij mij zo nu en dan. Ik denk dat de connectie niet goed werkte. Verder niet meer onderzocht. Loxone schakelt het functieblok uit door die regels commentaar (voordat ie de MS herstart).
[ Voor 4% gewijzigd door mgizmo op 05-05-2026 19:58 ]
Het is wel lekker tweakergehalte om dit te coderen, maar in de praktijk, ik heb er al eerder over geschreven, blijf je aanklooien met niet-Loxone producten. Sensoren van derden gaat prima, zoals @JanHenk maar dan is het inderdaad weer 10 seconden als je de standaard functionaliteiten gebruikt.
goed te doen, dus met de sleep kun je dit een beetje fine-tunen en onder de 5 seconden krijgen. Is de moeite waard om in elkaar te sleutelen.mgizmo schreef op dinsdag 5 mei 2026 @ 19:55:
[...]
Zeker, ik gebruikte deze code voor het uitlezen van ClimaControl: Slimme besturing voor airco'scode:Hierbij het doc naar de functies: https://www.loxone.com/de...stomScriptProgramming.pdf
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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124// *** PROGRAM DISABLED *** // This PicoC program caused an error. // Please find and correct the error and remove these three comment lines to enable this PicoC program again. // READ FROM HEATPUMP char *host = "10.10.0.130"; // IP Heatpump char *page = "/control"; // API Endpoint int GetPowerValue(char *json) { // Parse the value from the JSON and return an integer int ivalue = 0; char *rawvalue = strstrskip(json, "power\": \""); char *value = calloc(1, 10); strncpy(value, rawvalue, 2); if (strcmp(value, "of") == 0) { ivalue = 0; } // Power value is OFF if (strcmp(value, "on") == 0) { ivalue = 1; } // Power value is ON return ivalue; } int GetModeValue(char *json) { int ivalue = 0; char *rawvalue = strstrskip(json, "mode\": \""); char *value = calloc(1, 10); strncpy(value, rawvalue, 3); if (strcmp(value, "aut") == 0) { ivalue = 0; } if (strcmp(value, "coo") == 0) { ivalue = 1; } if (strcmp(value, "fan") == 0) { ivalue = 2; } if (strcmp(value, "dry") == 0) { ivalue = 3; } if (strcmp(value, "hea") == 0) { ivalue = 4; } return ivalue; } int GetFanValue(char *json) { int ivalue = 0; char *rawvalue = strstrskip(json, "fan\": \""); char *value = calloc(1, 10); strncpy(value, rawvalue, 1); if (strcmp(value, "a") == 0) { ivalue = 0; } // Fan value is Auto if (strcmp(value, "1") == 0) { ivalue = 1; } if (strcmp(value, "2") == 0) { ivalue = 2; } if (strcmp(value, "3") == 0) { ivalue = 3; } if (strcmp(value, "4") == 0) { ivalue = 4; } if (strcmp(value, "5") == 0) { ivalue = 5; } return ivalue; } int GetVaneValue(char *json) { int ivalue = 0; char *rawvalue = strstrskip(json, "vane\": \""); char *value = calloc(1, 10); strncpy(value, rawvalue, 1); if (strcmp(value, "a") == 0) { ivalue = 0; } // Vane value is Auto if (strcmp(value, "1") == 0) { ivalue = 1; } if (strcmp(value, "2") == 0) { ivalue = 2; } if (strcmp(value, "3") == 0) { ivalue = 3; } if (strcmp(value, "4") == 0) { ivalue = 4; } if (strcmp(value, "5") == 0) { ivalue = 5; } if (strcmp(value, "S") == 0) { ivalue = 6; } // Vane value is Swing return ivalue; } float GetTempValue(char *json) { float fvalue = 0; char *rawval = strstrskip(json, "set_temperature\": "); char *val = calloc(1, 10); strncpy(val, rawval, 4); fvalue = batof(val); return fvalue; } float GetOutdoorTempValue(char *json) { float fvalue = 0; char *rawval = strstrskip(json, "outdoor\": "); char *val = calloc(1, 10); strncpy(val, rawval, 4); fvalue = batof(val); return fvalue; } float GetRoomTempValue(char *json) { float fvalue = 0; char *rawval = strstrskip(json, "actual_temperature\": "); char *val = calloc(1, 10); strncpy(val, rawval, 4); fvalue = batof(val); return fvalue; } float GetRoomHumidityValue(char *json) { float fvalue = 0; char *rawval = strstrskip(json, "hact\": "); char *val = calloc(1, 10); strncpy(val, rawval, 4); fvalue = batof(val); return fvalue; } while(TRUE) { // keep looping until all the inputs match the set values in the HP char *result = httpget(host, page); // read JSON from HP int HPsetPower = GetPowerValue(result); // extract power value from JSON setoutput(0,HPsetPower); int HPsetMode = GetModeValue(result); setoutput(1,HPsetMode); int HPsetFan = GetFanValue(result); setoutput(2,HPsetFan); int HPsetVane = GetVaneValue(result); setoutput(3,HPsetVane); float HPsetTemp = GetTempValue(result); setoutput(4,HPsetTemp); float HPgetRoomTemp = GetRoomTempValue(result); setoutput(5,HPgetRoomTemp); float HPgetRoomHumidity = GetRoomHumidityValue(result); setoutput(6,HPgetRoomHumidity); float HPgetOutdoorTemp = GetOutdoorTempValue(result); setoutput(7,HPgetOutdoorTemp); sleep(10000); }
En functieblok: https://www.loxone.com/enen/kb/custom-script-programming/
Edit: Heb de eerste drie comment regels dus in de gaten. De code crashte bij mij zo nu en dan. Ik denk dat de connectie niet goed werkte. Verder niet meer onderzocht. Loxone schakelt het functieblok uit door die regels commentaar (voordat ie de MS herstart).
Jazeker.HiBe schreef op dinsdag 5 mei 2026 @ 20:01:
[...]
goed te doen, dus met de sleep kun je dit een beetje fine-tunen en onder de 5 seconden krijgen. Is de moeite waard om in elkaar te sleutelen.
Schiet me nog te binnen. Wellicht dat Shelly (https://www.shelly.com/pr...os=2&_fid=35dc9258d&_ss=c 63A max totaal. Dus wel van een andere orde dan die van Loxone) een optie is. Ik meen begrepen te hebben dat je in Shelly naar UDP ip:port kan sturen. Dan hoeft Loxone niet te pollen.
https://github.com/jannis...main/UDP/Virtual%20Inputs
HomeWizard heeft dit dan weer niet.
[ Voor 14% gewijzigd door mgizmo op 05-05-2026 20:16 ]
ik heb hier een aantal shelly producten in huis, loopt over het algemeen prima. UDP push heb ik nog niet geprobeerd, ga ik me eens in verdiepen.mgizmo schreef op dinsdag 5 mei 2026 @ 20:07:
[...]
Jazeker.
Schiet me nog te binnen. Wellicht dat Shelly (https://www.shelly.com/pr...os=2&_fid=35dc9258d&_ss=c 63A max totaal. Dus wel van een andere orde dan die van Loxone) een optie is. Ik meen begrepen te hebben dat je in Shelly naar UDP ip:port kan sturen. Dan hoeft Loxone niet te pollen.
https://github.com/jannis...main/UDP/Virtual%20Inputs
HomeWizard heeft dit dan weer niet.
Nieuwsgierig wat je precies bedoelt. En die CT klemmen zijn jouw keuze?HiBe schreef op dinsdag 5 mei 2026 @ 19:10:
die van Loxone (energy meter tree 40mA) lijkt hiervoor het meest geschikt, maar wat is dat ding duur zeg (komt op bijna 300 euro met 100A CT klemmen)
Snap de vraag niet helemaal. maar in mijn geval heb ik beperkte ruimte om componenten te installeren. Dus met de https://shop.loxone.com/n...current-transformers-tree kan ik het beste uit de voeten, maar ja daar moeten dan nog wel CT klemmen bij. huisaansluiting is 25A, maar soms ga ik daar net overheen, dus volgende optie is 100A klemmen (dat is dan weer niet zo'n groot prijsverschil -> https://shop.loxone.com/n...nt-transformers-100a-16mm vs. https://shop.loxone.com/n...ent-transformers-25a-10mm )Gwaihir schreef op dinsdag 5 mei 2026 @ 20:51:
[...]
Nieuwsgierig wat je precies bedoelt. En die CT klemmen zijn jouw keuze?
@HiBe Je wil de hoofdaansluiting meten en dat is 1-fase 25A?
De meter meet dat toch? Waarom gebruik je die gegevens niet (via de P1-poort)?
[Oh.. never mind.. had de bladzijde nog niet omgeslagen. Je hebt kennelijk nog een DSMR 4.2 meter.]
En waarom anders geen directe aansluiting? Die is 96 euro.
De meter meet dat toch? Waarom gebruik je die gegevens niet (via de P1-poort)?
[Oh.. never mind.. had de bladzijde nog niet omgeslagen. Je hebt kennelijk nog een DSMR 4.2 meter.]
En waarom anders geen directe aansluiting? Die is 96 euro.
[ Voor 14% gewijzigd door Gwaihir op 05-05-2026 21:30 ]
Volgens mij werkt de UDP route niet voor de nieuwste generatie (gen.3 en gen.4) producten. Die hebben die functionaliteit niet (meer). De oudere Shelly producten wel inderdaad…mgizmo schreef op dinsdag 5 mei 2026 @ 20:07:
[...]
Jazeker.
Schiet me nog te binnen. Wellicht dat Shelly (https://www.shelly.com/pr...os=2&_fid=35dc9258d&_ss=c 63A max totaal. Dus wel van een andere orde dan die van Loxone) een optie is. Ik meen begrepen te hebben dat je in Shelly naar UDP ip:port kan sturen. Dan hoeft Loxone niet te pollen.
https://github.com/jannis...main/UDP/Virtual%20Inputs
HomeWizard heeft dit dan weer niet.
vw id.7 tourer pro s | evcc | holtkamper aero | fiscalist & prutser
Dank je. Kennelijk loop ik achter op dat front.JanHenk schreef op dinsdag 5 mei 2026 @ 21:37:
[...]
Volgens mij werkt de UDP route niet voor de nieuwste generatie (gen.3 en gen.4) producten. Die hebben die functionaliteit niet (meer). De oudere Shelly producten wel inderdaad…