Visa elförbrukningen i realtid i webbläsaren (med hjälp av Tibber + Watty / Pulse samt NodeJS)

Fungerar endast för dig som är nördig, har Tibber och en Watty eller Pulse-enhet.

Här kommer ett supernörderi som jag hade som fredagsnöje igårkväll. Vi använder ju Tibber som elbolag och använder deras Watty som är en elmätare i realtid som är kopplad till deras app. Det fungerar bra och vi har mycket glädje av den, men har inte den uppe hela tiden. Därför ville jag ha den funktionen i webbläsaren istället. Typ så här:

2022-08-06_19-41-45

Bättre icke-rörlig bild:

Jag lajvar ju utvecklare från tid till annan - och jag vet att en hel del av er här på forumet också är det - så kommer här en kort beskrivning och lite kod. Kanske någon kan ha glädje av det. Kanske kan sätta upp ett GitHub-projekt vid tillfälle.

Tyvärr är ju inlärningströskeln hög. Men så här tror jag att jag gjorde.

  • Installera Node
  • Installera Socket.io + express-ramverket
  • Lägg till ett npm-paketet tibber-pulse-connector
  • Kopiera kod från index.js + `index.html
  • Kopia Token från Tibber

Steg 1. Installera NodeJS på datorn om du inte redan har det.

Finns mycket guider på nätet.

Steg 2. Sätt upp miljön

I en egen mapp kör:

npm init

för att få en package.json. Kör därefter (var för sig):

npm install express@4
npm install socket-io
npm install tibber-pulse-connector
Så här ser min package.json ut när det är klart:
{
  "name": "tibber2",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.18.1",
    "socket.io": "^4.5.1",
    "tibber-pulse-connector": "^3.0.8"
  }
}

Steg 3. Kopiera följande till de olika filerna:

index.js
const app = require('express')();
const http = require('http').Server(app);
const io = require('socket.io')(http);
const port = process.env.PORT || 3000;

app.get('/', (req, res) => {
    res.sendFile(__dirname + '/index.html');
});

io.on("connection", (socket) => {

    const tibber = require('tibber-pulse-connector');
    const ws = require('ws'); // Remember to add this dependency, doh

    // Test tokens
    const token = `___REPLACE_WITH_TIBBER_PERSONAL_ACCESS_TOKEN___`;
    const homeId = `___REPLACE_WITH_TIBBER_HOME_ID___`;

    // const connector = new tibber({token, homeId, ws, onData: (data, homeId) => { console.log(data, homeId) }});
    const connector = new tibber({token, homeId, ws, onData: test});
    connector.start();

    function test(data, homeId){
        socket.emit('liveMeasurement',data['data']['liveMeasurement'])
    }
});

http.listen(port, () => {
    console.log(`Socket.IO server running at http://localhost:${port}/`);
});

samt

index.html
<!DOCTYPE html>
<html>
<head>
    <title>Elförbrukning</title>
    <script src="https://cdn.plot.ly/plotly-2.12.1.min.js"></script>
</head>
<body>
<h1>Förbrukning i realtid <span id="power_consumption"></span> kWh</h1>
<div id="tester" style="width:100%;height:800px;"></div>
<script src="/socket.io/socket.io.js"></script>

<script>
    TESTER = document.getElementById('tester');

    var layout = {
        // title: 'Förbrukning (kWh) i Realtid',
        showlegend: false,
        yaxis: {
            title: ' kWh'
        }
    };

    Plotly.newPlot( TESTER, [{
        y: [],
        x: [],
        mode: 'lines',
        line: {color: '#80CAF6'}
    }], layout, {responsive: true});

    let cnt = 0;
</script>

<script>
    var socket = io();

    // client-side
    socket.on("liveMeasurement", (data)=>{
        // console.log(data)
        document.getElementById('power_consumption').innerText = data.power
        Plotly.extendTraces(TESTER, {
            x: [[data.timestamp]],
            y: [[data.power]]
        }, [0])
    });
</script>

</body>
</html>

Steg 4. Kör.

Därefter är det bara att köra node index.js och öppna http://localhost:3000/

Få token och homeid från Tibber

Du kan få en egen access token via:

För att sedan se homeId så är det enklaste att gå till:

Där kan du testa API:et med realtidsförbrukning m.m.

6 gillningar

Tänk att sitta framför den och bli förbannad på något som tänder en extra lampa i huset ! ! Det känns lika jobbigt som att jaga rena aktier och sitta framför en börsskärm :person_tipping_hand:
Släck lampan din j…a unge :wink::joy: mina el grafer håller på att krascha :nerd_face:

10 gillningar

Jag kör Tibber och Home Assistant. Det finns en officiell integration där för Tibber. Då kan man skapa lite fina grafer och automationer för när elpriset når vissa nivåer :slight_smile:

5 gillningar

Kan tillägga att jag även har byggt en egen mätare som läser av elförbrukningen i elskåp baserat på lampan som blinkar där (precis som Pulse tror jag?)

Baserat på https://github.com/klaasnicolaas/home-assistant-glow

2 gillningar

Jag med, fungerar riktigt bra utan att behöva vara tibber kund. Jag har bara köpt tibber pulse och då får man ingen historik, men kopplar man ihop den med Home Assistant så löser man även historik.

1 gillning

Haha, du har nog rätt. Men eftersom jag har stoppat mig själv från att logga på Avanza på 10 dagar så behöver jag ju stilla beroendet. :joy:

Å andra sidan är den emotionella berg och dalbaneresan nog liknande - särskilt eftersom vi november - mars kan se emot 20 000 kWh förbrukning i SE04… :scream:

1 gillning

Jag har en smartmeter från Fronius. Som funkar i Tibberappen. Finns även andra märken.
Då ser man direkt i appen sin förbrukning i realtid.
Finns även sida för webbläsare. Dock måste den kopplas in av en elektriker.

Men det är kanske mest för oss vanligt folk som inte begriper oss på programmering….

1 gillning

Najs!

Men vad har du för enhet på y-axeln? Känns inte rätt med kWh

1 gillning

10 dagar. Läste lite fel första ggr 10 år :joy::wink::wink::partying_face: !

Rätt, det är W… hade en totalförbrukningsgraf först. :roll_eyes:

1 gillning

Och väldigt mycket enklare att komma igång med! Och har den bonusen att du kan enkelt lägga till fler saker att logga, t.ex. bergvärmen, elbilen, datorerna, solpaneler etc etc etc.

1 gillning

För mig är totalen inte så intressant. Det är var elen förbrukas som är det mest intressanta.

Därför har vi individuella mätare för olika intressanta grupper.

Att mäta totalförbrukningen i realtid ger mest ångest om man inte är redo att göra livsstilsförändringar.

Med timdebitering så finns det väl en lite större poäng, men då behöver man ju ha laster som kan styras till off peak tid.

För egen del så skulle det kännas som ett rejält kluv bakåt i utvecklingen att behöva välja när man kan leva livet beroende på en timtaxa.

Absolut… Det som fascinerat mig de senaste dagarna är nämligen att vi har ett “always-on” eller lägsta förbrukning på ca 500 W konstant. Det är 4 380 kWh per år, dvs. 25 % av vad en vanliga småhusvilla har. Det är alltså inte matlagning, lampor eller liknande, utan saker som står igång hela tiden.

Min slutsats också, särskilt nu när jag blev nyfiken på var dessa kWh försvinner. Många saker hade jag gissat helt fel, saker som jag trodde förbrukade mycket energi, men som i princip inte tog något alls.

1 gillning

Du borde kolla om det är inte så att hela gatan har kopplat in sig på dina elledningar @janbolmeson :person_tipping_hand::shushing_face::thinking: ? Så mycket ni förbrukar borde ni ha företags el avtal :heart_eyes::heart_eyes::nerd_face:

Har varit bortrest två vändor i somras och konstaterat att vår bostad drar nästan 1000 W konstant när vi inte är hemma. Vi har lite belysning, akvarium, uppvärmning förstås en nas, nätverk, standby-prylar (TV o.s.v.) men som du skriver, det drar ju iväg. Så 8700 kWh på ett år på ”ingenting”.

1 gillning

Stäng av allt. Undvik akvarium då fiskarna trivs ändå bäst i öppna vattnet :nerd_face: i naturens friheten :partying_face:

Känner igen känslan. :roll_eyes:

Särskilt om man skulle sätta på fastpris på el per kWh just nu på 5 kr/kWh så är det sjukt mycket pengar. Inte så mycket att jag inte har råd, men framförallt för att jag blir sur för att jag upplever att jag inte “får något för pengarna”. Skillnad lägga 30 000 SEK på en resa och 30 000 SEK för prylar som står på i huset… :flushed:

2 gillningar

Så man kommer hem till en iskub som råkat ut för inbrott menar du? :laughing: Om jag stänger av kamerorna, automatiseringen o.s.v. så det blir mer inbjudande för brottslingar.

1 gillning

Eller förlåra 250 tusen i en aktie på 1 månad :joy::joy::nerd_face::face_with_hand_over_mouth: . Men man kan säga att man hade kul för pengarna ändå eller hur @janbolmeson :joy:

Fast där finns ändå en sannolikhet för uppgång över tid. Sannolikheten för att få tillbaka spenderade kWh-kronor är exakt lika med 0… :kissing_heart:

2 gillningar