Nav https://www.circuitsonline.net/forum/view/171102 heb ik een Shelly Plug S gekocht, primair als timer, maar ik kan er bovendien energieverbruik mee meten gedurende het hele broodbakproces.

In eerste instantie gebruikte ik hier het logscherm voor waarin veel te veel data staan. Ben even bezig geweest met Pyhton en regular expressions om te filteren, maar ik mis ervaring.

Het bakproces duurt 4 uur. Ik heb de timer ingesteld op 15000 = 4 uur en 10 minuten.
Met Copilot heb ik dan een scriptje leren maken die enkel per minuut W en Wh uitspuugt:

let INTERVAL = 60 * 1000;
let lastWh = null;

Timer.set(INTERVAL, true, function () {

// Tijd ophalen via RPC
Shelly.call("Sys.GetStatus", {}, function (sys) {

let tijd = sys.time; // "HH:MM:SS"

// Energie ophalen via RPC
Shelly.call("Switch.GetStatus", { id: 0 }, function (sw) {

let e = sw.aenergy.total; // Wh totaal

let avgW = null;

if (lastWh !== null) {
let deltaWh = e - lastWh;
avgW = deltaWh * 60; // gemiddeld vermogen in Watt
}

lastWh = e;

if (avgW !== null) {
print(tijd + " " + e + " Wh " + avgW.toFixed(1) + " W");
} else {
print(tijd + " " + e + " Wh (eerste meting)");
}

});

});

});

Geeft bij halogeenlampje (minuutje uitgeschakeld, om 10:12 aan gezet) deze uitvoer in de console die onder het script staat :
10:01 970.098 Wh 0.0 W 10:01:06
10:02 970.098 Wh 0.0 W 10:02:06
10:03 970.523 Wh 25.5 W 10:03:06
10:04 970.947 Wh 25.4 W 10:04:06
10:05 971.584 Wh 38.2 W 10:05:06
10:06 972.008 Wh 25.4 W 10:06:06
10:07 972.432 Wh 25.4 W 10:07:06
10:08 972.857 Wh 25.5 W 10:08:06
10:09 973.281 Wh 25.4 W 10:09:06
10:10 973.705 Wh 25.4 W 10:10:06
10:11 973.918 Wh 12.8 W 10:11:06
10:12 973.918 Wh 0.0 W 10:12:06
10:12 973.918 Wh 0.0 W 10:12:06
10:13 974.342 Wh 25.4 W 10:13:06
10:14 974.766 Wh 25.4 W 10:14:06
10:15 975.191 Wh 25.5 W 10:15:06
10:16 975.615 Wh 25.4 W 10:16:06

Werkt prima zolang de stroomconsumptie constant blijft.
Maar... er lijkt iets mis met het samplen. Dat lijkt ongeveer eens per 8 seconden te gebeuren: als ik de lamp doorlopend circa 4 sec aan- en 4 sec uitschakel kan ik stroomverbruik 0 krijgen met verbruik 0W , óf volvermogen 25,4W. Dit komt bij smartplugs vaker voor, zie...:

1-s2.0-S2772671123000323-main.pdf

Energy errors follow the same pattern for all models. For steady-state
loads (0Hz), the energy error is small. As the load becomes more variable
(0.01-1 Hz), energy error increases, indicating that the smart plugs are
not able to accurately follow the changes in power consumption

Dat is een groot probleem als ik mijn broodbakproces wil meten omdat het thermostaatje en de mengmotor dat soort aan/uit schakeltijden hebben.

Hoe verbeter ik dit script? Kan je iets met de signalering minder dan 4 W (="uit" of apparaat op "stand by"?).

Hier, in het Duits, veel uitgebreider over Shelly scripting: https://draeger-it.blog/shelly-scripting-javascript-grundlagen-fuer-ei…

[Copilot heeft me ook een minihandleiding scripten verstrekt, zie de bijlage. Hoe goed/slecht is die?]

Totnutoe probeerde ik van alles in de Shelly webinterface, die zit bij mij hier: http://192.168.1.81/#/
Dan beland ik op de Homepage, ziet er zo uit:

Een heleboel krijg ik niet werkend van de documentatie: https://shelly-api-docs.shelly.cloud/gen2/
Bijvoorbeeld RPC.
Vandaag ontdekt dat dit werkt: http://192.168.1.81/rpc/shelly.getstatus
Dan krijg je alles te zien wat er in zit! Dat ziet er zo uit:

Ik had met wat experimeteren gevonden dat "current" waarde ca 3 seconden stijg/afval tijd heeft als ik lamp aan/uit doe. Ik zoek nu iets te programmeren om vaker, bv per seconde, te samplen zodat ik broodbakproces (waar motor en thermostaat vaak aan/uit gaan) beter kan volgen.

Ik heb nu een scriptje wat sampled om de 2 seconden. Dat is ongeveer de stijg/afval tijd als ik lampjes aan/uit schakel. Geeft vlotte reactie bij Stroom (Amp) en Power (Watt).
Maar bij de energie (Wh) wordt dit niet direct bijgewerkt: dat gaat blijkbaar in buckets van 0,212 of 0,213 Wh; reden, verklaring???
Dit is het script (copieer de tekst uit de bijlage, want copieren uit deze post lijkt niet goed te gaan.):

let INTERVAL = 2 * 1000;
Timer.set(INTERVAL, true, function () {

// Tijd ophalen via RPC
Shelly.call("Sys.GetStatus", {}, function (sys) {

let systijd = sys.time; // "HH:MM"

// Energie ophalen via RPC
Shelly.call("Switch.GetStatus", { id: 0 }, function (sw) {

let e = sw.aenergy.total; // Wh totaal

let i = sw.current; //Amp

let p = sw.apower; // Watt

print(systijd + " systeemminuut " + e + " Wh " + " " + i + " Amp " + " " + p + " W" +
" 2 seconden stap >>>>>>>>>>>>");
});

});

});

Als je de script tussen code tags zet dan kun je wel copiëren:
Zie https://www.circuitsonline.net/forum/faq/2#code_tag


let INTERVAL = 2 * 1000;

Timer.set(INTERVAL, true, function () {

  // Tijd ophalen via RPC
  Shelly.call("Sys.GetStatus", {}, function (sys) {

    let systijd = sys.time;   // "HH:MM"

    // Energie ophalen via RPC
    Shelly.call("Switch.GetStatus", { id: 0 }, function (sw) {

      let e = sw.aenergy.total;   // Wh totaal
      
      let i = sw.current; //Amp

      let p = sw.apower; // Watt
     
        print(systijd + " systeemminuut   " + e + " Wh  " + "   " + i + " Amp  " + "   " + p + " W" +  
        "                                           2 seconden stap >>>>>>>>>>>>");

    });

  });

});

Ik wil best wel even testen met mijn shelly, maar ik heb even andere prioriteiten. Dus je zult even moeten wachten.

Heb lang gezocht naar iets wat een mooi grafiekje geeft van samples uit mijn scripts.

Shellyscannner

https://www.usna.it/shellyscanner/index_en.html
Heb het gedownload voor Windows, had het draaiend binnen 5 minuten.

waarom is het belangrijk dat je het vermogen meet en niet het verbruik?

dus als je de Wh (verbruik) zou meten en dat deelt door de tijd, krijg je volgens mij een beter resultaat.

als je van 10h05 tot 10h15 meet hoeveel Wh er verbruikt is, dan kan je bepalen dat je oven 90% van de tijd heeft aangestaan (je weet het wat de weerstand verbruikt, dus de tijd kan je eruit halen)

moet je trouwens echt tot de seconde weten wat de oven doet, op een baktijd van 4uur?

@fcapri
Het is gebleken dat het verbruik in buckets van 0,212 Wh wordt aangepast.
Het duurt bij 20W verbruik dan 38 s om een update te krijgen.
Als ik dan elke seconde het verbruik in W uit die Wh wil berekenen dan zou W gedurende 38 seconden niet veranderen. Ik mis dus resolutie, en de geregistreerde energie gaat ook nog eens over voorgaande periodes.

Als ik elke seconde Watt registreer heb ik verbruik in Wh in die ene seconde precies.

Ik heb mijn shelly inmiddels ook aan de praat. En je scriptje werkt inderdaad. Al is het wel lastig om de structuur te doorgronden zo.

Maar het is me niet helemaal duidelijk waar je naartoe wilt. Het script print wat data in het debug window, en dat krijg je alleen te zien als je dat debug-window opent. Maar je gaat toch niet heel de dag naar dat window kijken?

Ik ben nu Broodjebakken aan het registreren, hier de eerste 32 minuten zoals het uit de Shelly analyser komt.
Je ziet in het begin de menger korte tikjes geven, daarna wat langere. Vermogen ca 40W.
Later komt er de verwarming aan/uit bij. Vermogen ca 500W.
Dan 20 minuten wachten/rijzen. Vermogen 0W.
Laatste stukje gaat hij verder met verwarmen.

[Bericht gewijzigd door Spog2 op (14%)]

Mooi toch? ZO kan je wel zien wat er verbruikt wordt.

Op maandag 16 februari 2026 22:03:02 schreef Spog2:
Heb lang gezocht naar iets wat een mooi grafiekje geeft van samples uit mijn scripts.

Shellyscannner

https://www.usna.it/shellyscanner/index_en.html
Heb het gedownload voor Windows, had het draaiend binnen 5 minuten.

Ik dacht dat ShellyScanner charts maakt uit mijn scripts, maar hij maakt het van zijn eigen oproepen "Getstatus" in zijn eigen tijdsinterval. Je kan charts krijgen van de geel omrande waarden.
Dat tijdsinterval ("Status refresh (s)" ) kan je instellen via "Settings"/"Network":

Je kan je script en uitvoer wel volgen via "Scripts"/ "Edit", gewoon zoals het werkt in het Shelly scherm.
Maar je krijgt dus hiervan niet de charts, wat je direct merkt als je ander tijdsinterval instelt.