Weiter zum Inhalt

ioBroker Allgemein

30.0k Themen 441.0k Beiträge

Integrationtsplattform für IoT

NEWS

  • Sungrow SG (nicht Hybrid) Modbus Register TSV

    2
    0 Stimmen
    2 Beiträge
    368 Aufrufe
    M
    ich habe mal mit hilfe von Internet-Recherchen was zusammengestellt ich bin mir noch nicht sicher ob alles richtig ist, aber vielleicht hilft es Anderen ja schon _address name description unit type len factor offset formula role room cw isScale 5002 Daily PV Generation PV-Stromerzeugung heute Kwh uint16be 1 0.1 0 value true false 5003 Total PV Generation PV-Stromerzeugung gesamt Kwh uint32sw 2 0.1 0 value true false 5005 Total running time yields Gesamt Laufzeit h uint32be 1 0.1 0 value true false 5007 Inside Temperature Temperatur im Wechselrichter °C int16be 1 0.1 0 value true false 5010 MPPT 1 Voltage MPPT1 Spannung V uint16be 1 0.1 0 value true false 5011 MPPT 1 Current MPPT1 Strom A uint16be 1 0.1 0 value true false 5012 MPPT 2 Voltage MPPT2 Spannung V uint16be 1 0.1 0 value true false 5013 MPPT 2 Current MPPT2 Strom A uint16be 1 0.1 0 value true false 5014 MPPT 3 Voltage MPPT3 Spannung V uint16be 1 0.1 0 value true false 5015 MPPT 3 Current MPPT3 Strom A uint16be 1 0.1 0 value true false 5016 Total DC Power PV-Leistung aktuell W uint32sw 2 1 0 value true false 5018 Voltage Ph A Spannung Phase A V uint16be 1 0.1 0 value true false 5019 Voltage Ph B Spannung Phase C V uint16be 1 0.1 0 value true false 5020 Voltage Ph C Spannung Phase C V uint16be 1 0.1 0 value true false 5021 Ph A Current Strom Phase A A uint16be 1 0.1 0 value true false 5022 Ph B Current Strom Phase C A uint16be 1 0.1 0 value true false 5023 Ph C Current Strom Phase C A uint16be 1 0.1 0 value true false 5030 Total DC Power PV-Leistung aktuell W uint32sw 2 1 0 value true false 5035 Grid Frequency Netzfrequenz Hz uint16be 1 0.1 0 value true false 5037 Running State Betriebsstatus uint16be 1 1 0 value true false 5044 Fault/Alarmcode 1 Störung/Alarmcode 1 uint16be 1 1 0 value true false 5112 Daily running time Tägliche Laufzeit min uint16be 1 0 0 value true false
  • Forecast.solar mit dem Systeminfo Adapter

    systeminfo solar json
    188
    0 Stimmen
    188 Beiträge
    40k Aufrufe
    GarganoG
    @jb_sullivan Hier der Code mit axios: getSolar() ist die eigentliche Funktion. Es gibt auch einen Adapter, der aus dem Script hervorging hier der Adapter // Test mit VS Code Extension /* read solar forecasts for 3 different orientations Author : gargano Display in VIS : use JSON Chart from Scrounger Version 1.1.0 Last Update 13.3.2022 Change history : use axios */ const prefix = '0_userdata.0.'; const idSolarJSON1 = prefix+"SolarForecast3.SuedOst.JSON"; const idSolarJSON2 = prefix+"SolarForecast3.Dach.JSON"; const idSolarJSON3 = prefix+"SolarForecast3.SuedWest.JSON"; const idSolarToday1 = prefix+"SolarForecast3.SuedOst.Today"; const idSolarToday2 = prefix+"SolarForecast3.Dach.Today"; const idSolarToday3 = prefix+"SolarForecast3.SuedWest.Today"; const idSolarTomorrow1 = prefix+"SolarForecast3.SuedOst.Tomorrow"; const idSolarTomorrow2 = prefix+"SolarForecast3.Dach.Tomorrow"; const idSolarPanelTomorrow= prefix+"SolarForecast3.Solar.Tomorrow"; const idSolarPanelToDay = prefix+"SolarForecast3.Solar.ToDay"; const idSolarTomorrow3 = prefix+"SolarForecast3.SuedWest.Tomorrow"; const idSolarJSONTable = prefix+"SolarForecast3.JSONTable"; const idSolarJSONGraph = prefix+"SolarForecast3.JSONGraph"; const idSolarDachJSONGraph = prefix+"SolarForecast3.Dach.JSONGraph"; const createStateList = [ {name :idSolarJSON1, type:"string", role : "value"}, {name :idSolarJSON2, type:"string", role : "value"}, {name :idSolarJSON3, type:"string", role : "value"}, {name :idSolarToday1, type:"number", role : "value"}, {name :idSolarToday2, type:"number", role : "value"}, {name :idSolarToday3, type:"number", role : "value"}, {name :idSolarTomorrow1, type:"number", role : "value"}, {name :idSolarTomorrow2, type:"number", role : "value"}, {name :idSolarTomorrow3, type:"number", role : "value"}, {name :idSolarPanelTomorrow, type:"number", role : "value"}, {name :idSolarPanelToDay, type:"number", role : "value"}, {name :idSolarJSONTable, type:"string", role : "value"}, {name :idSolarJSONGraph, type:"string", role : "value"}, {name :idSolarDachJSONGraph, type:"string", role : "value"} ] // create states if not exists async function createMyState(item) { if (!existsState(item.name)) { await createStateAsync(item.name, { type: item.type, min: 0, def: 0, role: item.role }); } } async function makeMyStateList (array) { // map array to promises const promises = array.map(createMyState); await Promise.all(promises); } async function main () { await makeMyStateList(createStateList); schedule(mySchedule, getSolar ); getSolar(); } main(); // define axios and url const axios = require('axios'); /* https://api.forecast.solar/estimate/:lat/:lon/:dec/:az/:kwp lat - latitude of location, -90 (south) … 90 (north) lon - longitude of location, -180 (west) … 180 (east) dec - plane declination, 0 (horizontal) … 90 (vertical) az - plane azimuth, -180 … 180 (-180 = north, -90 = east, 0 = south, 90 = west, 180 = north) kwp - installed modules power in kilo watt */ // set lat and lon for the destination const lat = myLat; // defined in global const long = myLon; // defined in global const url = 'https://api.forecast.solar/estimate/'; // Fenster Wohnzimmer var url1 = url+lat+'/'+long+'/90/-30/1'; // Dach var url2 = url+lat+'/'+long+'/35/60/6.2'; // Fenster Küche / Schlafzimmer var url3 = url+lat+'/'+long+'/90/60/1'; const legendTest = ["Wohn","Dach","Küche"]; const graphColor = ["red","green","yellow"]; const datalabelColor = ["lightgreen","lightblue","lightblue"]; const tooltipAppendText= " kWh"; var solarJson1; var solarJson2; var solarJson3; var solarJsons = [solarJson1,solarJson2,solarJson3]; const idSolarJSONS = [idSolarJSON1,idSolarJSON2,idSolarJSON3] const idSolarToDayS = [idSolarToday1,idSolarToday2,idSolarToday3] const idSolarTomorrowS = [idSolarTomorrow1,idSolarTomorrow2,idSolarTomorrow3] const logging = true; const mySchedule ='{"time":{"start":"03:00","end":"23:00","mode":"hours","interval":1},"period":{"days":1}}' // handle the request : convert the result to table and graph async function makeResponse (thisResponse,thisIDSolarJSON,idx,thisIDSolarToDay,thisIDSolarTomorrow) { // handle success var datetoday = new Date(); var datetomorrow = new Date(datetoday.getTime()+(1000 * 60 * 60 * 24 * 1)); // übermorgen wäre dann am Ende eine 2 anstatt 1 let today = formatDate(datetoday, 'YYYY-MM-DD'); let tomorrow = formatDate(datetomorrow, 'YYYY-MM-DD'); var watts = thisResponse.data.result.watts; if (logging) log ('Watts '+JSON.stringify(watts)); let table = []; for(let time in watts) { let entry = {}; entry.Uhrzeit = time; entry.Leistung = watts[time]; table.push(entry); } let kWhToDay = thisResponse.data.result.watt_hours_day[today]/1000; let kWhTomorrow = thisResponse.data.result.watt_hours_day[tomorrow]/1000; solarJsons[idx] = JSON.stringify(table); await setStateAsync(thisIDSolarJSON, JSON.stringify(table), true); await setStateAsync(thisIDSolarToDay, kWhToDay, true); await setStateAsync(thisIDSolarTomorrow, kWhTomorrow, true); } // summarize the single watts results to table and graph async function makeTable () { if (logging) log ('MakeTable'); let watts1 = JSON.parse(solarJsons[0]); let watts2 = JSON.parse(solarJsons[1]); let watts3 = JSON.parse(solarJsons[2]); if (logging) log ('Items: '+watts1.length); let table = []; let axisLabels = []; // make table for(var n=0;n<watts1.length;n++) { let entry = {}; entry.Uhrzeit = watts1[n].Uhrzeit; entry.Leistung1 = watts1[n].Leistung; entry.Leistung2 = watts2[n].Leistung; entry.Leistung3 = watts3[n].Leistung; entry.Summe = watts1[n].Leistung + watts2[n].Leistung+ watts3[n].Leistung; table.push(entry); } // prepare data for graph let graphTimeData1 = []; for(var n=0;n<watts1.length;n++) { graphTimeData1.push(watts1[n].Leistung); let time = watts1[n].Uhrzeit.substr(11,5); axisLabels.push(time); } let graphTimeData2 = []; for(var n=0;n<watts2.length;n++) { graphTimeData2.push(watts2[n].Leistung); } let graphTimeData3 = []; for(var n=0;n<watts3.length;n++) { graphTimeData3.push(watts3[n].Leistung); } // make total graph var graph = {}; var graphAllData = []; var graphData = {"tooltip_AppendText":tooltipAppendText,"legendText": legendTest[0],"yAxis_id": 1,"type": "bar","displayOrder": 1,"barIsStacked": true,"color":graphColor[0],"barStackId":1,"datalabel_rotation":-90,"datalabel_color":datalabelColor[0],"datalabel_fontSize":10}; graphData.data = graphTimeData1; graphAllData.push(graphData); graphData = {"tooltip_AppendText": tooltipAppendText,"legendText": legendTest[1],"yAxis_id": 1,"type": "bar","displayOrder": 2,"barIsStacked": true,"color":graphColor[1],"barStackId":1,"datalabel_rotation":-90,"datalabel_color":datalabelColor[1],"datalabel_fontSize":10}; graphData.data = graphTimeData2; graphAllData.push(graphData); graphData = {"tooltip_AppendText": tooltipAppendText,"legendText": legendTest[2],"yAxis_id": 1,"type": "bar","displayOrder": 3,"barIsStacked": true,"color":graphColor[2],"barStackId":1,"datalabel_rotation":-90,"datalabel_color":datalabelColor[2],"datalabel_fontSize":10}; graphData.data = graphTimeData3; graphAllData.push(graphData); graph.graphs=graphAllData; graph.axisLabels = axisLabels; setState(idSolarJSONTable, JSON.stringify(table), true); setState(idSolarJSONGraph, JSON.stringify(graph), true); // make Dach graph var graph = {}; var graphAllData = []; var graphData = {"tooltip_AppendText":tooltipAppendText,"legendText": legendTest[1],"yAxis_id": 1,"type": "bar","displayOrder": 1,"barIsStacked": true,"color":graphColor[0],"barStackId":1,"datalabel_rotation":-90,"datalabel_color":datalabelColor[0],"datalabel_fontSize":10}; graphData.data = graphTimeData2; graphAllData.push(graphData); graph.graphs=graphAllData; graph.axisLabels = axisLabels; setState(idSolarDachJSONGraph, JSON.stringify(graph), true); } async function getSolar() { const request1 = axios.get(url1); const request2 = axios.get(url2); const request3 = axios.get(url3); let requests = [request1,request2,request3]; await axios .all(requests) .then (axios.spread(async (...responses) => { // use/access the results for (var n=0;n<responses.length;n++) { if (logging) console.log(responses[n].data); await makeResponse (responses[n],idSolarJSONS[n],n,idSolarToDayS[n],idSolarTomorrowS[n]); } if (logging) console.log("All url loaded"); await makeTable(); let vDachToDay = parseFloat(((await getStateAsync(idSolarToday2)).val).toFixed(2)); setState(idSolarPanelToDay,vDachToDay); let vDachTomorrow = parseFloat(((await getStateAsync(idSolarTomorrow2)).val).toFixed(2)); setState(idSolarPanelTomorrow,vDachTomorrow); })) .catch(errors => { // react on errors. console.log(errors) }) }
  • Sungrow SG [NICHT HYBRID] MODBUS

    2
    0 Stimmen
    2 Beiträge
    337 Aufrufe
    M
    @tiedi hattest du Erfolg? Ich suche nämlich auch das Regsiter für den SG8
  • VIS startet nicht mehr - vermutlich Eigenverschulden

    32
    0 Stimmen
    32 Beiträge
    3k Aufrufe
    rtwlR
    @homoran ja natürlich.
  • Diablo 4 Worldbosstimer in ioBroker/VIS

    1
    0 Stimmen
    1 Beiträge
    210 Aufrufe
    Niemand hat geantwortet
  • Wie erstelle ich eigene Adapter?

    22
    1 Stimmen
    22 Beiträge
    7k Aufrufe
    mcm1957M
    Und generell empfiehlt sich hier auch unsere TELEGRAMM Gruppe "ioBroker Adapter Development Starters" - invite Links auf https://www.iobroker.dev
  • backitup sichert keine Passwörter oder api key's

    15
    0 Stimmen
    15 Beiträge
    1k Aufrufe
    mickymM
    @edstobi Ja das kannst ignorieren, wenn Du die Sicherung nimmst. Wie gesagt um zu testen - benenne das NodeRed Verzeichnis um und lass es aus dem Backit Up wiederherstellen.
  • DoorBird (Funktioniert) Zeigt aber nicht Standbild d. Kamera

    51
    1
    0 Stimmen
    51 Beiträge
    8k Aufrufe
    B
    @negalein gut das du mich drann erinnerst .. muss noch den node js Controler updaten u.a. doorbird ist veraltet. Danke !
  • Mi Fan 2S Ausschaltverzögerung

    3
    0 Stimmen
    3 Beiträge
    389 Aufrufe
    G
    @io_laurent Ja, dort klapp es über den Datenpunkt "countdown-time" leider ebenfalls nicht und die Werte dort werden auch nicht aktualisiert. Ich kann zwar den Ventilator ein und aus schalten indem ich den Datenpunkt "on" beschreibe, aber er zeigt immer true, auch wenn er aus ist.
  • Neuer Datenpunkt in Baum automatisch in Datenbank schreiben

    7
    0 Stimmen
    7 Beiträge
    708 Aufrufe
    ?
    @sven-schumacher Der LoraWan Adapter wäre doch schon mal der erste mögliche Schritt bei deinem Vorhaben? Damit würden zumindest schon mal alle Daten in Datenpunkte geschrieben werden. Nachdem ich deine Eingangsfrage 10x gelesen habe, ahne ich was Dein Ziel ist. Mit dem "IDs from Selector" "lauscht" der Trigger auf jedes "up" in der MQTT Instanz, zieht sich aus dem JSON die ApplicationID, ApplicationName und DevEUI und erstellt daraus eine Ordnerstruktur in 0_Userdata [image: 1722093799658-61d746ed-743a-4ab0-8443-a597c613ad1a-image.png] Bei der Erstellung vom Datenpunkt wird der Eintrag fürs Logging ("custom":{ "influxdb.1":{ "enabled":true,..........) gleich mit übergeben. createState("0_userdata.0."+ Ordner +".Temperature", 0,{ name: "Temperature", unit: "°C", read: true, write: true, desc: "Beschreibung", type: "number", "custom": { "influxdb.1": { "enabled": true, "storageType": "", "aliasId": "", "debounceTime": 0, "blockTime": 0, "changesOnly": false, "changesRelogInterval": 0, "changesMinDelta": 0, "ignoreBelowNumber": "", "disableSkippedValueLogging": false, "enableDebugLogs": false, "debounce": 0 } } }); [image: 1722094396214-62c55d9e-a45e-4c3f-97c0-67ae2ecdd1b9-image.png] Auf die Art ist es egal, ob du ein Device hast, oder 1000. Sobald du Geräte in Chirpstack hinzufügst werden, sofern noch nicht vorhanden die Datenpunkte erstellt, befüllt und in der Datenbank (hier InfluxDB). NoTouch sozusagen, in Iobroker musst du dann nix machen. Den ID Selctor kannst musst du evtl noch mit der ApplicationID ergänzen, falls da in CS auch noch andere Devicetypen mit drin hast. Eigentlich ist genau mit diesem Hintergrund der LoraWan Adapter entstanden, der das gleiche macht. Die Möglichkeit, dass beim Anlegen der DP automatisch ein logging Eintrag erstellt wird, kommt wohl in den nächsten Tagen mit rein. Nachtrag 30.07.2024: Im LoraWan Adapter 1.3.0 (auf GIT) ist die "Auto Logging" Funktion integriert, siehe (weiter unten): Anleitung Automatik Logging einrichten
  • wmbus Adatpter Unknown VIFExt 0x13

    1
    0 Stimmen
    1 Beiträge
    145 Aufrufe
    Niemand hat geantwortet
  • MQTT-Adapter Cache löschen (manuell angelegt Datenpunkte)

    20
    0 Stimmen
    20 Beiträge
    2k Aufrufe
    BananaJoeB
    @sammy-r sagte in MQTT-Adapter Cache löschen (manuell angelegt Datenpunkte): Ich gebe Dir da Recht, ich hatte die Datenpunkte erst bei bei meinen userdata, allerdings war das nervig, weil ich bim Testen immer scrollen musste 2 Bildschirme mit mehreren Browserfenstern nebeneinander wirken wunder!
  • Entwicklungseinblicke Juni 2024

    admin app iobroker matter news
    5
    3 Stimmen
    5 Beiträge
    1k Aufrufe
    foxriver76F
    Und wieder ist der letzte Freitag dieses Monats gekommen: https://forum.iobroker.net/topic/76050/entwicklungseinblicke-juli-2024
  • Smarter Katzenschreck mit Einbindung in iobroker

    katzenschreck
    11
    0 Stimmen
    11 Beiträge
    2k Aufrufe
    D
    @maxpd ich bin mittlerweile auf abschreckung mittels bewegungsmelder und einem versenkregner umgestiegen. Das hat mein Problem bis jetzt gelöst obwohl das sicherlich eine aufwändige variante war.
  • Adapter zur erweiterten Lichtsteuerung

    5
    0 Stimmen
    5 Beiträge
    1k Aufrufe
    Bass-TB
    Hi Zusammen, möchte das Thema hier gerne nochmal aktualisieren; ich habe verschiedene Helligkeitssensoren und Präsentsmelder in meiner Wohnung. Beleuchtung ist nahezu komplett Smart. Aufgabe: Der Helligkeitssensor für draußen sagt "extrem hell". Als Hitze Schutz ist aber die Verdunklung fast komplett unten. Daher nur noch 10lux im Wohnzimmer. Mit den Leuchten kann ich max 2100 lux bringen. Also brauche ich jetzt am besten ein Script / Vorlage / Adapter zur Konstant Licht Regelung. Gibt es da was? Um das ganze zu erschweren, Schalte / Dimme / CT ich im Wohnzimmer 5 Leuchten unterschiedlich, wobei eine Leuchte (Decke) nicht mit geregelt werden soll. :) [image: 1721923344681-screenshot_20240725_180200.png] und es wird immer schlimmer :D Grüße
  • Zigbee Probleme - Instanz startet nicht mehr

    zigbee zigbee cc2531 herdsman
    5
    1
    0 Stimmen
    5 Beiträge
    545 Aufrufe
    Martin SchlenderM
    @meister-mopper das war es leider nicht. Der war bei mir nämlich schon erst gar nicht installiert oder ich hatte den am Anfang schon deinstalliert weil da mal berichtet worden war, dass das Ding Probleme macht.
  • [Frage] ioBroker mit Yahka / Anzeige von Watt

    yahka tasmota
    5
    1
    1 Stimmen
    5 Beiträge
    3k Aufrufe
    L
    @ri also wenn ich das so mache: [image: 1721913152851-f078f25c-9bc0-4db6-9ff7-953d95e5c7ac-image.png] zeigt er als Name "Watt" an und nicht das was in dem State "Testvariable" hinterlegt ist. Geht so wohl nicht, leider.
  • Visualisierung des PV-Ertrags

    5
    0 Stimmen
    5 Beiträge
    827 Aufrufe
    Steffe.S.S
    Ich habe es mit eChart und Energieflussadapter erweitert gelöst. Die Daten kannst ja dann einfach zusammen abbilden bzw. als Gesamtertrag zusammen rechnen (siehe bei mir : Gesamtverbrauch / Wärmepumpe) Die Daten der Module werden nicht in Echtzeit übermittelt, daher weichen die Werte etwas ab. [image: 1721897985969-screenshot-2024-07-25-105849.png]
  • No valid Pattern

    8
    1
    0 Stimmen
    8 Beiträge
    292 Aufrufe
    Ben1983B
    @mcm1957 Also erst Rückmeldung einen Tag nach dem ich von "," auf ", " umgestellt habe..... keine Meldungen aktuell.
  • [gelöst] zigbee-herdsmann-converters / installierte Version

    3
    0 Stimmen
    3 Beiträge
    316 Aufrufe
    KlarieK
    Vielen Dank für die schnelle Hilfe! Gruß Klaus

368

Online

33.0k

Benutzende

83.7k

Themen

1.3m

Beiträge