Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. MyStrom Switch ohne Cloud

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.5k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.7k

MyStrom Switch ohne Cloud

Geplant Angeheftet Gesperrt Verschoben JavaScript
1 Beiträge 1 Kommentatoren 1.2k Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Becks0815B Offline
    Becks0815B Offline
    Becks0815
    schrieb am zuletzt editiert von Becks0815
    #1

    Die MyStrom-Dinger sind recht einfach gestrickt und können direkt und ohne Umwege ausgelesen werden. Eine Beschreibung der Möglichkeiten (sowie Gefahren, sollte jemand von aussen drauf zugreifen können): https://api.mystrom.ch/

    Was das Skript macht: es ruft die Report Webseite eines MyStrom-Switches auf,lLiest die Daten (JSON-Format) aus und speichert den Verbrauchswert als Zahl ab. Zudem werden die letzten x Werte als Liste/Array gespeichert und daraus der Durchschnitts der letzten x Messpunkte berechnet.

    Der Vorteil: es reicht, den MyStrom-Switch in das eigene Netzwerk zu integrieren (geht z.B. über WPS oder auch das Troubleshooting-Tool), aber zum Auslesen der Daten braucht es keine Cloud und kein MyStrom-Account. Es funktioniert also alles auch ohne I-Net Anbindung.

    Installation:

    • Den in der Variable datapath hinterlegten Datenpfad unter Obejket erzeugen. Ich nutze für jeden Switch ein eigenes Unterverzeichnis unter MyStrom
    • Drei Variablen im Datenpfad erzeugen: conumption_array (Typ array), consumption_average (Zahl), consumption_current (Zahl)
    • Entweder die IP-Adresse oder den Rechnernamen des Switch in der Variable myStromAdapterName hinterlegen
    • Wenn gewünscht die Anzahl der Messwerte zur Mittelwertsbildung ändern und die Abruffrequenz (derzeitig alle 10 Sekunden) anpassen.
    • JS-Programm speichern und starten.
    // Rechnername des Adapters
    var myStromAdapterName = "myStrom-Switch-B16674.home";
    // Pfad zur Speicherung der Daten
    var datapath = "0_userdata.0.myStrom.Switch-B16674";
    
    var max_datapoints = 10;
    var consumption_list;
    var myStrom;
    
    // Berechnet den Durschnittswert einer gegebenen Liste
    function mathMean(myList) {
      return myList.reduce(function(x, y) {return x + y;}) / myList.length;
    }
     
     
    if (getState(datapath+".consumption_array").val) {
      consumption_list = getState(datapath+".consumption_array").val;
    } else {
      consumption_list = [];
      setState(datapath+".consumption_array", consumption_list, true);
    }
    
     schedule("*/10 * * * * *", async function () {
        // Pull data from Switch API -> JSON format result
        request("http://"+myStromAdapterName+"/report", function (err, state, body){
            if (body) {
                //console.log(JSON.stringify(body));
                //console.log(body);
                myStrom = JSON.parse(body);
                console.log(myStrom.power);
                console.log(myStrom.temperature);
    
                // store newest data point in array, drop anything above 
                while (consumption_list.length >= max_datapoints) {
                    consumption_list.shift();
                }
                consumption_list.push(myStrom.power).val;
                setState(datapath+".consumption_array", consumption_list, true);
                setState(datapath+".consumption_current", myStrom.power, true);
                setState(datapath+".consumption_average", Math.round((mathMean(consumption_list))*10)/10, true);
                console.log(consumption_list);
    
            } else {            
                log('Request meldet Fehler: ' + err, 'error');  
            }
        }); 
    });
    
    1 Antwort Letzte Antwort
    1
    Antworten
    • In einem neuen Thema antworten
    Anmelden zum Antworten
    • Älteste zuerst
    • Neuste zuerst
    • Meiste Stimmen


    Support us

    ioBroker
    Community Adapters
    Donate

    355

    Online

    32.4k

    Benutzer

    81.5k

    Themen

    1.3m

    Beiträge
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
    ioBroker Community 2014-2025
    logo
    • Anmelden

    • Du hast noch kein Konto? Registrieren

    • Anmelden oder registrieren, um zu suchen
    • Erster Beitrag
      Letzter Beitrag
    0
    • Home
    • Aktuell
    • Tags
    • Ungelesen 0
    • Kategorien
    • Unreplied
    • Beliebt
    • GitHub
    • Docu
    • Hilfe