NEWS
Anker Adapter
-
Ja, das ist der Nachteil von vorgeformten GUI- Lösungen. Du kannst nur das machen, was der Ersteller des GUI/des Adapters auch zugänglich macht.
Und eine zusätzliche Fehlerquelle und zusätzlicher Overhead ist es eigentlich auch, vollkommen korrekt.Ist halt (tw. auch nur vermeintlich) einfacher zu bedienen/einzurichten.
-
@thomas-braun hey. ich habe das jetzt mal so nachgebaut auf mein System bezogen. Nachher mal ausprobieren obs dann läuft. Wo laufen die werte dann auf?
-
@excalibur270 sagte in Anker Adapter:
Wo laufen die werte dann auf?
Auf deinem mqtt-Broker. Musst du dann dort abholen, ich verwende dazu den mqtt-Adapter. Die Werte schleife ich dann noch durch ein Skript, das mir die Einzelwerte in entsprechende Datenpunkte legt.
-
Das kam jetzt bei mir. Alles gemacht. Mosqitto intalliert und eingerichtet. Die Skripte auf meinen Pi angepasst. Ich lass das glaube ich lieber sein. Dafür fehlt der Sachverstand.
> solix2mqtt@1.0.0 start > node ./bin/app.js node:internal/modules/cjs/loader:1143 throw err; ^ Error: Cannot find module '/home/pi/solix2mqtt/bin/app.js' at Module._resolveFilename (node:internal/modules/cjs/loader:1140:15) at Module._load (node:internal/modules/cjs/loader:981:27) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_ma in:128:12) at node:internal/main/run_main_module:28:49 { code: 'MODULE_NOT_FOUND', requireStack: []
-
@thomas-braun Jetzt kommt was an. Als Json.
Magst beim Script dafür einmal helfen. Also nochmal? -
Sieht so aus:
// where the mqtt messages arrive const mqttDatenpunktObjectId = 'mqtt.0.solix.site.NAMESETZEN.scenInfo'; // where the states should appear const userDataFolder = '0_userdata.0.solix'; // ############## end user config // receive on(mqttDatenpunktObjectId, (obj) => { const jsonString = obj.state.val; const jsonData = JSON.parse(jsonString); function createObjectsRecursively(parent, data) { for (const key in data) { const obj = data[key]; const stateName = `${parent}.${key}`; if (typeof obj === 'object') { createObjectsRecursively(stateName, obj); } else { let value = obj; // Check if the state already exists. If it does, just update the value. // If it does not exist create the states. if (!existsState(stateName)) { // If the state does not exist, create it and set the value createState(stateName, value, { name: key, type: typeof value, role: "value", read: true, write: true }); log(`Created state ${stateName}`); } else { setState(stateName, value, true); } } } } createObjectsRecursively(userDataFolder, jsonData); });
-
@excalibur270 Als Alternative kannst Dir meinen NodeRed Flow anschauen, der legt Dir alle Datenpunkte automatisch an - egal ob Objekt, JSON, Array oder sonst was.
https://forum.iobroker.net/topic/43856/json-oder-javascript-objekt-in-iobroker-datenpunkte-zerlegen
Wenn Du aber lieber programmieren willst bzw. Codefragmente nutzen willst, dann nimm halt das Javascript.
-
@thomas-braun Daaaaaaaaaaaaaaaaaaaankeschön
-
@mickym Hey. Ja,das hatte ich auch schon gefunden.
-
@thomas-braun Und jetzt wieder das. Was ist da falsch?
Error: Cannot find module '/home/pi/solix2mqtt/bin/app.js' at Module._resolveFilename (node:internal/modules/cjs/loader:1140:15) at Module._load (node:internal/modules/cjs/loader:981:27) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:128:12) at node:internal/main/run_main_module:28:49 { code: 'MODULE_NOT_FOUND', requireStack: []
-
@excalibur270 sagte in Anker Adapter:
Und jetzt wieder das. Was ist da falsch?
Wann wird die Meldung ausgelöst? Und ich würde solix2mqtt auch nicht in einem /home-Verzeichnis installieren, sondern in /usr/local/bin
Auf meiner Kiste:
echad@chet:~ $ ls -la /usr/local/bin/solix2mqtt/bin/app.js -rw-r--r-- 1 iobroker iobroker 2949 Oct 21 2023 /usr/local/bin/solix2mqtt/bin/app.js echad@chet:~ $
-
@thomas-braun Der Akku vom Laptop war leer und die Konsole wurde geschlossen. Es wurde nichts mehr im IoBroker aktualisiert von der Solix. Also habe ich die Startdatei wieder eingegeben. Danach kam das.
Ist gekürzt wegen der Userdatenechad@chet:~ $ cat /home/pi/solix2mqtt/solix2mqtt.sh #!/bin/bash rm /home/pi/solix2mqtt/auth.data; cd /home/pi/solix2mqtt; S2M_USER=
-
@excalibur270 sagte in Anker Adapter:
und die Konsole wurde geschlossen. Es wurde nichts mehr im IoBroker aktualisiert von der Solix.
Das ist klar. Solange das nicht als Service läuft wird das Programm geschlossen, wenn der aufrufende user sich abmeldet.
U. a. auch deswegen wird das bei mir a) als service gestartet und b) dem user 'iobroker' der Prozess angehängt und c) ist das nicht in einem /home installiert. -
@thomas-braun habe das jetzt mal alles verschoben läuft wieder.
Jetzt nur noch den autostart hinbekommen und dann bin ich zufrieden -
Eine Vorlage für eine solix2mqtt.service hatte ich weiter oben schon gepostet.
-
@thomas-braun Ja. Die Service datei, ich denke die obere liegt bereits im verzeichnis.
Wenn ich dann den unteren teil so in die konsole eingebe mit meinen zugangsdaten usw läuft auch alles -
Wird an einem Adapter gearbeitet ?
Oder hat wer ne Anleitung für einen "normalen User" ? -
@flopsi sagte in Anker Adapter:
Wird an einem Adapter gearbeitet ?
Nicht das ich wüsste.
Oder hat wer ne Anleitung für einen "normalen User" ?
Was ist ein 'normaler user'? Bzw. was ist 'unnormal' an dem oben gezeigten Weg per Docker oder per systemd-Service?
-
@flopsi said in Anker Adapter:
Wird an einem Adapter gearbeitet ?
Oder hat wer ne Anleitung für einen "normalen User" ?https://github.com/ioBroker/AdapterRequests/issues/855
Status: Requested
-
Für Home Assistant gibt es da ja was: https://github.com/thomluther/ha-anker-solix
Schade, dass es da keinen entsprechenden Adapter für den ioBroker gibt.