@mcu Alleine für die Doku schon größten Respekt finde immer wieder neue Sachen, aber so ist das halt wenn man ein neues Spielzeug hat.
NEWS
Best posts made by ple
-
RE: jarvis v3.0.0 - just another remarkable vis
-
RE: async, await mit selector oder schleife????
@dutchman
Sorry, die Kids haben mich ein wenig in Anspruch genommen, aber ne kleine Pause ist auch mal nicht schlecht um das geschriebene neu zu lesen
Ok, grundsätzlich alles was await ist abfangen mit try und catch.
Müsste man es auch bei einemawait setStateAsync('Daten_lesen.' + Tabelle + '.' + Spaltenname, Daten);
oder ist es in der function setStateAsync bereits mit eingebaut oder geht man davon aus, dass es garantiert beschrieben werden kann.
Zum Thema abbrechen und eine Fehlermeldung ausspucken.
Kann ich meine function Main irgendwie abbrechen, wenn ein error bei irgendein await auftritt? z.B, das die Metadaten nicht geschrieben werden können, weil der SQL nicht erreichbar ist? Dann sollte der Rest auch nicht mehr laufen.Und nochmals herzlichen Dank für eure Unterstützung
Einige Bücher werde ich mir mal zulegen bei Zeiten.
Gruß -
RE: Devices, Alias, Assistenten + Visualisierungen + die Zukunft
@da_woody
Ja, du nutzt den Alias Adapter. Den hatte ich mir auch schon angesehen. Klar, wenn die originalen Datenpunkte soweit schon bereits gut aufgearbeitet sind, dann werden die Rollen, Typen, Einheiten auch übernommen.Es gibt im iobroker aber noch mehr, iobroker versucht anhand der Metadaten zu mappen. zb. was ist eine Steckdose, was ein Licht usw.
und das versuche ich zu verstehen, warum einige gehen und andere nicht.
Für mich sind die Typen, Rollen, Funktionen eindeutig um zu bestimmen, ob es ein Licht mit Dimmer ist, oder Steckdose schaltbar mit Energiemessung.
Und genau das wollte ich mit Alias abdecken und hatte gehofft, Lovelace erkennt es anhand der Metadaten.Der Jarvis Adapter macht es ähnlich, aber dort müssen die Geräte erst mal händisch angelegt werden, dort wird auch angegeben was der Datenpunkt ist, Blind.Level usw.
Und genau die doppelte Arbeit wollte ich mir ersparen, wenn ich den Alias alle mitgeben kann.
Das mache ich ein mal fertig. -
RE: [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write)
So, ich hab die Antwort von Huawei, also Modbus geht wohl nicht über lan, teste ich nachher mal über Wlan dann halt eben.
Anbei noch 2 pdf´s die die mir mitgeschickt haben.
2021M1005 Modbus TCP communication with residential inverters trough SDo....pdf
SDongleA-05 MODBUS TCP Guide.pdf -
RE: Übergabe von Werten von Smartmeter an cFos Wallbox
Moin
ich bin gerade selber dabei die Cfos irgendwie in Betrieb zu nehmen. So halb klappt es.
Was ich sagen kann, worüber ich gestolpert bin ist, dass der http inputzähler bei mir folgende Daten bekommet, in den Scripten und Beschreibungen wird teilweise mit vah gearbeitet, ich habe bei mir wh genommen. Keine Ahnung was die API von CFOS nun wirklich will, aber bis jetzt klappt es.
ich schicke also folgendes.var data = `{ "power_va": ${Leistung}, "voltage": ${Voltage}, "current": ${Current}, "import_wh": ${Import}, "export_wh": ${Export}, "is_va": false }`;
Der Inhalt ist wie folgt.
{ "power_va": -14437, "voltage": [232.5, 232.5, 234.1], "current": [-20020, -20370, -21130], "import_wh": 7479640, "export_wh": 49590330, "is_va": false }
So, wichtig ist, dass die Werte vom Strom bei Einspeisung negativ sind, positiv würde bedeuten, du importierst den Strom.
Zähler muss Netzbezug sein, damit der in 2 Richtungen messen kann. Ich habe noch einen weiteren Inputzähler genommen, der mir die PV Erzeugung anzeigt, wird aber eigentlich nicht benötigt,
3 phasig laden klappt soweit.Jetzt ist mir aber folgendes aufgefallen, was ich nicht verstehe.
Wenn ich 1 phasig umschalte und auf L1 theoretisch Netzbezug habe wegen Wärmepumpe und L2, L3 Überschuss und in Summe noch 3 KW einspeise, wird das Auto nicht geladen. Ich befürchte, das die Ströme nicht addiert werden und bei 1phasigen Laden halt L1 bestimmt, ob läd oder nicht.Ich glaube auch, dass bei 3phasigen Laden, sobald eine Phase unter 6A kommt beim Überschussladen, der Ladevorgang nach x Zeit abbricht.
So ganz bin ich da nicht hintergekommen, aber vielleicht kann mir einer diese Fragen hier beantworten, die Überschussladen bereits am laufen haben.
Gruß
-
RE: [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write)
So, ich habe neue Infos, der ktl 30-m3 kann anscheinend kein Modbus TCP mit dem Dongle, es soll angeblich ein Firmware update geben irgendwann mal. Na toll.
habt ihr alle hier kleinere Modelle vom ktl m3?gruß
-
RE: [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write)
@badsnoopy667
so hat mir keine Ruhe gelassen.
Mit dem Update des dongle auf die 130 gibt es neue Register, nun braucht man nicht mehr rumrechnen für aktuelle Leistung Bezug, Einspeisung, Batterie (habe keine) und Hausverbauch.
Man muss dazu wissen, das man die Unit id 100 dafür eintragen muss beim Register, welches man auslesen möchte. Die globale bleibt weiterhin auf 1 stehen.
Leider gibt es noch keine Register für kWh, habe mal ein paar durchprobiert aber nichts gefunden. Denke aber das kommt noch von Huawei, wäre auch sonst echt blöd. Ich habe mal angefragt.
Ansonsten teile ich hier noch meinen Flow, der kann auch die Leistung in W pro String rausgeben. Habe die dann noch summiert für die Dachflächen SO und NW. Man kann gut sehen wie NW einspringt wenn SO abnimmt.
Ich habe viel mit NodeRed rumgespielt, keine Ahnung ob es noch besser geht.
Flow.txt
Latest posts made by ple
-
RE: getState ohne/mit await
@paul53
Erstmal vielen lieben Dank für deine Erklärungen für mich NewbieIrgendwie noch ein wenig Spaghetti im Kopf.
Also, wenn ich es richtig verstanden habe, dann kann ich mit eingeschalteten Puffer getState und setState direkt nutzen, die Werte sind im Puffer, und bei einem getState oder setstate wird gewarten bis er wirklich im "Puffer" geschrieben ist, richtig? Das heißt aber, die sind noch nicht mit dem JS Controller/Datenbank synchronisiert. Das kommt dann irgendwann automatisch.Ohne Puffer nutzt man dann await setStateasync oder await getStateasync, damit sicher erst die DAtenpunkte beschrieben sind, bevor es weiter geht.
Ich bastel mir gerade ne Schrittkette (Typisch Siemens
) mit einem int Wert, der dann von den einzelen Scripten gesetzt wird, wenn die sicher ihre Arbeit abgeschlossen haben. Die nachfolgenden Scripte arbeiten mit Werten aus den vorherigen Scripten.
Gruß und Besten Dank für deine Geduld
-
RE: getState ohne/mit await
@paul53 ich dachte an sowas.
MSSQL schickt ne Query los und die Antwort kommt an. Anhand der Spaltennamen lasse ich States erzeugen und befülle diese direkt mit dem Inhalt.
Jetzt werden 200 States dadurch erzeugt mit denen ich rechnen will. Jetzt muss ich ja erst sicher sein, dass die 200 States auch wirklich den aktuellen Wert aus der Query haben, bevor es weitergeht.
Zumindest mein Verständnis nach, oder ich bin voll auf dem Holzweg. -
RE: getState ohne/mit await
@paul53
So ähnlich kenne ich das auch noch aus den Admin2 Jahren.
ein setState direkt nach createstate klappte damals nicht, weil der State noch nicht vorhanden war. Fuschlösung von mit damals, einfach ein Delay eingebaut
Aber da will ich ja von runter.
Mit Admin 5 oder so kam dann await/async, da war mein Stand, dass in der Zeile gewartet wurde, bis der State erzeugt wurde. Ist aber schon Jahre her und ich war mit der Sanierung beschäftigtWas macht denn nun der Puffer genau? Wenn dieser aktiv ist, würde der dann bei createState auch warten, bis der wirklich erzeugt wurde und ich direkt danach ein setstate machen kann?
Können im Puffer denn noch alte Werte stehen, theoretisch?Gruß und Vielen Dank für die ganzen Infos, macht echt Spaß wieder mehr mit dem iob zu machen.
-
RE: getState ohne/mit await
@hub01
Dein Thread passt ja wie geschnitten auf meine Frage. Ich fange jetzt wieder an mit iobroker und Scripte für mein KNX. Eigentlich musste ich da nicht ran, weil es einfach läuft, aber ich will ja jetzt ein wenig mehr dazulernen.
Ich komme noch aus der Zeit mit Admin2.0, da waren meine Scripte alle nur getState oder setState. Ja ich hatte damals Callback gehört, aber nie richtig verstanden. Ich komme eher aus der Welt der Siemens S7.Jetzt nach einigem lesen und Chatgpt, bin ich auf await/async gestoßen.
Wenn der Code von oben nach unten durchrattert, bewirkt jetzt ein await getStateasync und ein await setStateasync, dass genau in dieser Zeile solange gewartet wird, bis die States gesetzt sind?Hier mal ein Beispiel, kam von GROK.
async function createAndSetState(id, initialValue, config, newValue) { try { await createStateIfNotExists(id, initialValue, config, initialValue); const current = await getStateAsync(id); if (current?.val !== newValue) { await setStateAsync(id, newValue, true); log(`[update] ${id}: ${JSON.stringify(current?.val)} → ${JSON.stringify(newValue)}`, 'debug'); } else { log(`[skip] ${id} unverändert: ${JSON.stringify(newValue)}`, 'debug'); } } catch (err) { log(`Fehler bei State ${id}: ${err.message}`, 'error'); } }
Die Funktion soll mir nur die States beschreiben, wenn diese unterschiedlich sind zum vorherigen um die schreiblast zu minimieren. Ausgelesen wird eine MSSQL Antwort und dann gesplittet.
Aufruf wäre dann in einer async function.
for (const dp of dataPoints) { await createAndSetState(dp.id, dp.value, dp.config, dp.value); } await setStateAsync(`${pfad}is_syncing`, false, true);
Ich gehe mal davon aus, dass wenn erst alle State beschrieben worden sind, das dann is_syncing auf false gesetzt wird.
Das gleiche dann auch für createState, wenn die noch nicht vorhanden sind.
async function createStateIfNotExists(id, initialValue, config, defaultValue) { try { const exists = await existsStateAsync(id); if (!exists) { await createStateAsync(id, initialValue, config); await setStateAsync(id, defaultValue, true); } } catch (err) { log(`Fehler bei State ${id}: ${err.message}`, 'error'); } }
Sehe ich das alles so richtig? Oder gibt es einfachere Wege. Stehe da ein wenig auf dem Schlauch.
Gruß und Besten Dank.
-
RE: npm @supabase/supabase-js klappt irgendwie nicht.
Ok, also als Javascript scheint es zu klappen, nur Typescript will nicht.
Naja, dann mach ich in Javascript weiter. Daten kommen schon mal rein. -
npm @supabase/supabase-js klappt irgendwie nicht.
Moin Moin zusammen,
ich wollte mit Supabase und dem iobroker mal rumspielen. Dazu habe ich eine aktuelle iobroker Instanz auf meinen Windwosrechner installiert und den Javascriptadapter.
Dann unter zusätzlich Module mal @supabase/supabase-js eingefügt in beiden Felder.
Einimport { createClient } from '@supabase/supabase-js';
führt leider dazu.
script.js.common.Supabase: TypeScript compilation failed:import { createClient } from '@supabase/supabase-js'; ^ERROR: Cannot find module '@supabase/supabase-js' or its corresponding type declarations.
laut npm ls ist es hier installiert.
C:\ioBroker\node_modules>npm ls iobroker.inst@3.0.0 C:\ioBroker +-- @iobroker-javascript.0/supabase-supabase-js@npm:@supabase/supabase-js@2.50.0
Oder war meine Annahme falsch, dass man die Supabase doch nicht so einfach ans laufen bekommt.
Gruß und Besten Dank.
-
Datenbank Supabase? iob alternative zu Electron/Tauri?
Hallo zusammen,
Mal so eine Frage in die Runde. Aktuell plane ich für einen Kollegen als Hobbyprojekt eine automatische Preisanpassung für seine Edelmetalle.
Kurz gesagt, ich habe mal mit Supabase ne Datenbank aufgebaut und per Edge Function hole ich mir von einer API die aktuellen Preise/g. Soweit so gut.
Per MS SQL kann ich mich mit der Datenbank verbinden wo die Artikel liegen und ziehe mir alle relevanten Daten.So, jetzt dachte ich mir, mache ich doch einfach ein Electron Programm mit Shadcn als Frontend Visu, aber das frisst soviel Zeit um da reinzukommen, dass ich jetzt überlege es übern iobroker zu machen. Also würde ich mir alle Artikel ziehen und ne Preisberechnung machen per Typscript und den Preis wieder zurückschieben.
Vorteil wäre, ich weiß, was ich da einigermaßen mache und iobroker hätte schon viele Sachen an Bord die nützlich sein könnten (Telegram, VIS(kommerzielle Nutzung), Logging). Für die Edelmetallcharts könnte ich sowas einbinden eventuell.
Sind schon coole Charts dabei
https://de.tradingview.com/lightweight-charts/Meine Frage basiert daraufhin, hat schon mal jemand versucht Superbase anzubinden?
https://supabase.com/docs/reference/javascript/introduction
Das scheint generell interessant zu sein für den iobroker, wenn man nicht local einen SQL aufsetzen möchte und das Dashboard ist sehr simpel gehalten, Realtime gibt es auch anscheinend.Gruß
-
RE: Shelly 3PM Pro Emulator
@mikerow sagte in Shelly 3PM Pro Emulator:
Das GitHub B2500 Projekt hat eine Möglichkeit IOB Datenpunkte anzubinden. In diese Datenpunkte schreibst du deine Werte vom Zähler.
Puh, weiß jemand was aktuell das einfachste ist den akku zu steuern? so wie ich das gelesen habe entweder mit ne shelly, oder shelly emulieren, oder Modbus und selbst steuern.
Hat jemand da schon was im Einsatz und kann berichten, was am besten wäre?Gruß und Besten Dank.
-
RE: Test Adapter sun2000 v0.1.x - Huawei Wechselrichter
@bolliy sagte in Test Adapter sun2000 v0.1.x - Huawei Wechselrichter:
V200R022C10SPC200
Ok, also die 200 macht dann jetzt Probleme, dann bleibe ich noch weiter auf V100R001C00SPC133
welche hast du aktiv am laufen aktuell?Ah, jetzt seh ich gerade, dass ich den SDongle aktiviert sein muss, damit ich sehe, was gerade am Hausanschluss los ist. Also wieviel ich gerade importiere oder exportiere, Grid Power oder so.
Gruß
-
RE: Test Adapter sun2000 v0.1.x - Huawei Wechselrichter
Moin Moin zusammen,
so,nach 4 Jahre mit Nodered um die Daten per HTTP zur Wallbox Cfos zu schieben habe ich dann doch mal überlegt den Super gelungen Adapter zu testen, da es mit http ein wenig Probleme gab.
Zunächst, meinen größten Respekt und Hut ab für den super Adapter.
installiert, eingerichtet und läuft schon mal.
Dann hatte ich Modbus proxy ausprobiert, auch hier war die Verbindung mit der Cfos an den Proxy in 2 Minuten erledigt. Überschussladen muss ich mal probieren, ob es noch geht.Nun zu meiner Frage, mein SDongle ist noch auf V100R001C00SPC133, also recht alt. Der Inverter 30KTL ebenfalls. Akku ist nicht vorhanden.
Macht es Sinn, oder hat einer Probleme mit der aktuellen Software von Huawei? Sonst würde ich den auch mal updaten.Frage noch zum Adapter, Sdongle abfragen, wozu ist die Funktion? Alle Werte kommen doch auch vom Inverter selber oder nicht. Sind die aus dem Sdongle genauer oder schneller?
Gruß und Besten Dank.