NEWS
Zugangsgeschützte API-Schnittstelle auslesen mit Blockly
-
@oliverio Klingt logisch. Ich habe es ausprobiert und es klappt!
Vielen herzlichen Dank, OliverIO! -
Schön das es jetzt funktioniert, das Login ist wirklich blöd gelöst.
-
@tt-tom Dir natürlich auch herzlichen Dank!
-
@schnipsel71
moin, ich habe auch eine Hycube Anlage und hatte ein fertiges Script. Das funktioniert leider seit nem Update nicht mehr.
Nun habe ich das von dir gelesen und mich an die Arbeit gemacht.
Irgendwie kommen aber keine Daten aus meiner Anlage raus.
Ich pack das mal hier rein.httpGet( 'http://10.10.1.139/auth/', { headers: { "Authorization": Buffer.from("Basic hycube:hycube").toString("base64"), } }, (error, response) => { if (!error) { let token = response.data; console.log("Token "+ token); httpGet( 'http://10.10.1.139/get_values/', { headers: { "Authorization": token } }, (error, response) => { if (!error) { console.log(response.statusCode); console.log(response.data); var result = JSON.parse(response.data); var GridPower= (result["Grid_P"]); var BatteryPower=result["Battery_P"]; var HausPower= result["Home_P"]; var solar= result["solar1_P"]; setState("HyWeb.Batterie", BatteryPower); setState("HyWeb.Grid", GridPower); setState("HyWeb.Hausverbrauch", HausPower); setState("HyWeb.Solar", solar); } else { console.error(error); } } ); } else { console.error(error); } } );
Im Debugfenster kommt
javascript.0 14:06:19.611 info Stopping script script.js.ioBroker.Energie.Hycube.hycube javascript.0 14:06:19.711 info Start JavaScript script.js.ioBroker.Energie.Hycube.hycube (Javascript/js) javascript.0 14:06:19.724 info script.js.ioBroker.Energie.Hycube.hycube: httpGet(config={"method":"get","url":"http://10.10.1.139/auth/","responseType":"text","responseEncoding":"utf8","timeout":2000,"headers":{"User-Agent":"Mozilla/5.0 (X11; Linux i686; rv:109.0) Gecko/20100101 Firefox/121.0","Authorization":"QmFzaWMgaHljdWJlOmh5Y3ViZQ=="}}) javascript.0 14:06:19.727 info script.js.ioBroker.Energie.Hycube.hycube: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions javascript.0 14:06:19.772 info script.js.ioBroker.Energie.Hycube.hycube: Token ewogICAgIlBlcm1pc3Npb24iOiAzLAogICAgImV4cCI6IDE3MjE1NjcxNzkKfQo= javascript.0 14:06:19.772 info script.js.ioBroker.Energie.Hycube.hycube: httpGet(config={"method":"get","url":"http://10.10.1.139/get_values/","responseType":"text","responseEncoding":"utf8","timeout":2000,"headers":{"User-Agent":"Mozilla/5.0 (X11; Linux i686; rv:109.0) Gecko/20100101 Firefox/121.0","Authorization":"ewogICAgIlBlcm1pc3Npb24iOiAzLAogICAgImV4cCI6IDE3MjE1NjcxNzkKfQo="}}) javascript.0 14:06:19.782 info script.js.ioBroker.Energie.Hycube.hycube: 200 javascript.0 14:06:19.782 info script.js.ioBroker.Energie.Hycube.hycube: { "Battery_C": 100, "Battery_I": -21.299999237060547, "Battery_P": -1116.8814148439415, "Battery_V": 52.43574905395508, "Grid_I_L1": -19.158, "Grid_I_L2": -18.836, "Grid_I_L3": -18.267, "Grid_P": -13177.5, "Grid_V_L1": 237.6, "Grid_V_L2": 238.1, "Grid_V_L3": 236.2, "Grid_f": 50, "Home_P": 883.8000000000002, "Inv1_I_L1": 9.6, "Inv1_I_L2": 9.7, "Inv1_I_L3": 9.5, "Inv1_P_L1": -2365, "Inv1_P_L2": -2370, "Inv1_P_L3": -2372, "Inv1_V_L1": 238, "Inv1_V_L2": 238.4, "Inv1_V_L3": 236.1, "Meter2_P": -7043.7, "Meter3_P": -7017.6, "Solar1_I": 7.3, "Solar1_P": 2563, "Solar1_V": 381.8, "Solar2_I": 7.7, "Solar2_V": 464, "solar2_P": 3284, "solar_total_P": 5847 } javascript.0 14:06:19.783 warn at Object.<anonymous> (script.js.ioBroker.Energie.Hycube.hycube:32:25) javascript.0 14:06:19.785 warn at Object.<anonymous> (script.js.ioBroker.Energie.Hycube.hycube:33:25) javascript.0 14:06:19.788 warn at Object.<anonymous> (script.js.ioBroker.Energie.Hycube.hycube:34:25) javascript.0 14:06:19.789 warn at Object.<anonymous> (script.js.ioBroker.Energie.Hycube.hycube:35:25)
Datenpunkte werden keine angelegt
Mich würde interessieren wo da der Fehler im System ist -
Du musst die datenpunkte selbst anlegen.
SetState legt sie nicht an.Die Daten kommen an, man kann sie im log erkennen
-
@oliverio
Ah ok,
Dann versuche ich das mal
Zu lange her, dass ich das gemacht hatte -
Hallo Oliviero,
irgendwie klappts noch nicht wirklich.
Das Script liegt unter Scripte\ioBroker\Energy\Hycube.
Unter Objekte gibts oben den Ordner Userdata.
Es gibt aber auch einen Ordner Javascript.Hab in verschiedenen Ordner einen state Number BatteryPower angelegt aber steht immer 0 in Orange
Wahrscheinlich falscher Order oder falsch angelegt
-
der usprüngliche anfrager hatte diese datenpunkte
setState("HyWeb.Batterie", BatteryPower); setState("HyWeb.Grid", GridPower); setState("HyWeb.Hausverbrauch", HausPower); setState("HyWeb.Solar", solar);
ich glaube ich hatte mal darauf hingewiesen, das das so nicht zulässig ist (meines Wissens nach), es gab da aber keine antwort. keine Ahnung ob ihr da noch irgend etwas anderes verwendet.
Wenn du die Datenpunkte angelegt hast, dann kopiere den Datenpunktnamen und trage ihn im Skript ein.
Also so das bspw anstatt HyWeb.batterie dort 0_userdata.Batterie dransteht. -
@oliverio said in Zugangsgeschützte API-Schnittstelle auslesen mit Blockly:
GridPower
Hi, oki, Das habe ich verstanden und im alten Script war das auch mal so bei mir.
Ich hab das jetzt angepasst
setState("0_userdata.0.Datenpunkte_ioBroker.Hycube", BatteryPower); setState("0_userdata.0.Datenpunkte_ioBroker.Hycube", GridPower); setState("0_userdata.0.Datenpunkte_ioBroker.Hycube", HausPower); setState("0_userdata.0.Datenpunkte_ioBroker.Hycube", solar);
Dann lege ich in dem Hycube Ordner den Datenpunkt an aber selbes Ergebnis. 0
Die Orangenen Fehler von vorhin sind aber weg. Das würde bedeuten, dass er den Ordner findet
-
sorry war mein Fehler,
musste natürlich den Datenpunkt komplett im Script angeben.Jetzt gehts
Vielen Dank und schönen Sonntag
-
@heiko-glohr du schreibst die daten immer in den gleichen datenpunkt
das ist die bezeichnung des datenpunkts
0_userdata.0.Datenpunkte_ioBroker.Hycube
das ist die variable in der die daten enthalten sind und in den datenpunkt geschrieben werden sollen
BatteryPower
-
ok,
Werte kommen jetzt an aber noch wirr
Battery hat grag 81% und Wert kommt mit -1167,00667812
-
das sind die werte, die oben auf der console ausgegeben worden sind
von daher passt es vom wert, was da geliefert wird.
die interpretation der werte kann ich nicht. ich habe das gerät nicht.
aber evtl andere können da etwas dazu sagen.
hast du da eine weboberfläche oder app des gerätes?der dokumentation nach
file:///C:/Users/oweit/Downloads/API_Manual%20(3).pdfbedeuten die buchstaben das
Unit of measurement
Name Unit
C Capacity percent
P Power watt (W)
U Voltage volt (V)
I Current Ampere (A)
f frequenz Hertz (Hz){ "Battery_C": 100, "Battery_I": -21.299999237060547, "Battery_P": -1116.8814148439415, "Battery_V": 52.43574905395508, "Grid_I_L1": -19.158, "Grid_I_L2": -18.836, "Grid_I_L3": -18.267, "Grid_P": -13177.5, "Grid_V_L1": 237.6, "Grid_V_L2": 238.1, "Grid_V_L3": 236.2, "Grid_f": 50, "Home_P": 883.8000000000002, "Inv1_I_L1": 9.6, "Inv1_I_L2": 9.7, "Inv1_I_L3": 9.5, "Inv1_P_L1": -2365, "Inv1_P_L2": -2370, "Inv1_P_L3": -2372, "Inv1_V_L1": 238, "Inv1_V_L2": 238.4, "Inv1_V_L3": 236.1, "Meter2_P": -7043.7, "Meter3_P": -7017.6, "Solar1_I": 7.3, "Solar1_P": 2563, "Solar1_V": 381.8, "Solar2_I": 7.7, "Solar2_V": 464, "solar2_P": 3284, "solar_total_P": 5847 }
-
@oliverio
ah ok,ich spiel einfach mal bissl rum.
ISt ja schon mal gut wenn was zurückkommt. -
Nun passt alles soweit
Werte sind richtigSolarerzeugung kommt auch richtig zurück wenn ich das Script starte
Bleibt dann aber so stehenWie erreiche ich dass die Werte immer aktuell sind
-
du machst um deinen vorhandenen code die schedule anweisung
das müsste theoretisch alle 5 minuten dann ausführen.
mehr details findest du hier
https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#schedule
ich arbeite damit allerdings nicht, daher nur theoretischschedule("* */5 * * * *"),()=>{ hier dein code });
-
@heiko-glohr Oder du verwendest den Befehl im Originalscript (siehe in einer meiner ersten Beiträge).
-
@schnipsel71
so ähnlich hab ich es gemachtJetzt muss ich nur noch schauen wie das alles zusammenspielt.
Ich hab Ost/West und nen SMA Wechselrichter und ich meine, dass ich beides auslesen muss um die korrekten Angaben zu bekommen.
Die Zahlen nur aus der Hycube Anlage stimmen nicht mit dem was die App anzeigt.
Da wäre die Gesamtproduktion grad mal die Hälfte.Wenn man bei denen nachfragt können die leider nicht viel beitragen.
-
@heiko-glohr Du kannst über die entsprechenden Datenpunkte auch die Momentanleistung oder die Momentanstromstärke deines externen Wechselrichters auslesen.
Ich habe beispielsweise folgende Programmzeile zur Erfassung meiner Solarerzeugung:if ((Math.round(result["solar_total_P"] - result["Meter2_P"])) < 0) { setState('0_userdata.0.HyWeb.Solarerzeugung', 0); } else { setState('0_userdata.0.HyWeb.Solarerzeugung', Math.round(result["solar_total_P"] - result["Meter2_P"])); }