@Homoran Erledigt. Ich hoffe mein English reicht dafür.
Socket.io and conn.js and example index.html: No states #32
NEWS
Best posts made by Kamikaze
-
RE: Socket.io und conn.js
Latest posts made by Kamikaze
-
RE: Freie Definition von Tags und states für influxdb 2.0
@kamikaze Hello Marc,
sorry for my late answer. This tip work. I do not get any error message.
Thank you very much. -
Freie Definition von Tags und states für influxdb 2.0
Nach längere Zeit bin ich wieder aktiv an meiner iobroker Installation. In diesem Zusammenhang habe ich die influxdb von 1.0 auf 2.0 umgestellt und möchte nun die volle Funktionalität der Tags in influx nutzen.
Da ich bei dem sendto keine Möglichkeit gefunden habe, diese Parameter selbst zu setzen, habe ich folgendes Script entwickelt (Einbindung von @influxdata/influxdb-client-apis und @influxdata/influxdb-client im javascript Adapter vorausgesetzt):
const { InfluxDB, Point } = require('@influxdata/influxdb-client') const token = "MEIN TOKEN"; const url = 'MEINE URL; let org = `MEINE ORGANISATION`; let bucket = `iobroker`; const client = new InfluxDB({ url, token }); let writeClient = client.getWriteApi(org, bucket, 'ns') // // Messwerte in Influx-DB schreiben, alle 10 Sekunden // function write2influxDB() { // // Interface zu Solaranzeige // function writeSolaranzeige2Influx(location, device, typ) { let datum = Date.now() * 1000000; let BatSpannung = getState('mqtt-client.0.solaranzeige.laderegler.batteriespannung').val; let BatTemp = getState('mqtt-client.0.solaranzeige.laderegler.batterietemperatur').val; let BatStatus = getState('mqtt-client.0.solaranzeige.laderegler.batteriesoc').val; let BatMinVoltHeute = getState('mqtt-client.0.solaranzeige.laderegler.batterieminvoltheute').val; let BatMaxVoltHeute = getState('mqtt-client.0.solaranzeige.laderegler.batteriemaxvoltheute').val; let BatLadeStrom = getState('mqtt-client.0.solaranzeige.laderegler.batterieladestrom').val; let BatEndladeStrom = getState('mqtt-client.0.solaranzeige.laderegler.batterieentladestrom').val; let BatEntladeLeistung = getState('mqtt-client.0.solaranzeige.laderegler.batterieentladeleistung').val; let BatSolarLeistung = getState('mqtt-client.0.solaranzeige.laderegler.solarleistung').val; let BatSolarSpannung = getState('mqtt-client.0.solaranzeige.laderegler.solarspannung').val; let BatSolarSpannungMaxHeute = getState('mqtt-client.0.solaranzeige.laderegler.solarspannungmaxheute').val; let BatSolarStrom = getState('mqtt-client.0.solaranzeige.laderegler.solarstrom').val; let BatLadereglerTemp = getState('mqtt-client.0.solaranzeige.laderegler.temperatur').val; let BatVerbrauchGesamt = getState('mqtt-client.0.solaranzeige.laderegler.verbrauchgesamt').val; let BatVerbrauchGesamtHeute = getState('mqtt-client.0.solaranzeige.laderegler.verbrauchgesamtheute').val; let BatWattStundenGesamt = getState('mqtt-client.0.solaranzeige.laderegler.wattstundengesamt').val; let BatWattStundenGesamtHeute = getState('mqtt-client.0.solaranzeige.laderegler.wattstundengesamtheute').val; let BatTimeStamp = getState('mqtt-client.0.solaranzeige.laderegler.zentralertimestamp').val; let point = new Point('Solaranzeige') .tag('Location', location) .tag('Device', device) .tag('Element', 'Batterie') .tag('Typ', typ) .floatField('Spannung', BatSpannung) .floatField('Ladestrom', BatLadeStrom) .floatField('Entladestrom', BatEndladeStrom) .floatField('Entladeleistung', BatEntladeLeistung) .floatField('Temperatur', BatLadereglerTemp) .floatField('SpannungMaxHeute', BatMaxVoltHeute) .floatField('SpannungMinHeute', BatMinVoltHeute) .floatField('BatterieTemp', BatTemp) .floatField('SolarLeistung', BatSolarLeistung) .floatField('SolarSpannung', BatSolarSpannung) .floatField('SolarSpannungHeuteMax', BatSolarSpannungMaxHeute) .floatField('SolarStrom', BatSolarStrom) .floatField('Verbrauch', BatVerbrauchGesamt) .floatField('VerbrauchGesamtHeute', BatMaxVoltHeute) .floatField('SpannungMinHeute', BatVerbrauchGesamtHeute) .floatField('WattStundenGesamt', BatWattStundenGesamt) .floatField('Zeitstempel', BatTimeStamp) .floatField('WattStundenGesamtheute', BatWattStundenGesamtHeute) .floatField('Ladezustand', BatStatus) .timestamp(datum) writeClient.writePoint(point) } // // Hauptfunktion // // Schreiben Homematic Steckdosen // // // Schreiben Solarzeige // writeSolaranzeige2Influx('Garage', 'Solaranzeige', 'GesamteAnlage'); // // alle 5 Sekunden Zwischenspeicher übertragen // void setTimeout(() => { writeClient.flush() }, 5000) } let scheduler = schedule('*/10 * * * * *', write2influxDB); // alle 10 Sekunden
Ergebnis:
Dieser Abaluf inkl. der Datenspeicherung in der Datenbank scheint korrekt zu sein und alle Daten sind vorhanden. Außerdem hat dieser Vorgang die positive Nebenwirkung, dass ich beim Austausch von Geräten nur die entsprechenden Objekte hier ändern muss.Jetzt zu meinem Problem:
Von Zeit zu Zeit kommt im iobroker-Log eine Fehlermedung.2023-12-09 13:34:55.008 - error: javascript.0 (1261) An error happened which is most likely from one of your scripts, but the originating script could not be detected. 2023-12-09 13:34:55.008 - error: javascript.0 (1261) Error: Request timed out 2023-12-09 13:34:55.008 - error: javascript.0 (1261) RequestTimedOutError: Request timed outcode_text
Diese Fehlermeldung kommt manchmal 2 * täglich, manchmal häufig, zeitlich absolut unvorhersehbar.
Gibt es einen Experten, der sich dies einmal ansehen kann und mir einen Tip geben kann?
Eine instabile Netzwerkverbindung kann ich ausschließen. -
RE: Wie kann ich eine IDE für javascript nutzen
@fastfoot Asche auf mein Haupt.
Hiermit kann ich wieder nur sagen: Klasse Community. Perfekt. Vielen Dank. -
RE: Wie kann ich eine IDE für javascript nutzen
@fastfoot Das dachte ich mir schon, aber helfen tut es nicht.
Snips_2_0 ist das Javascript -
RE: Wie kann ich eine IDE für javascript nutzen
@fastfoot Ich kann dir nicht ganz folgen.
-
Wie kann ich eine IDE für javascript nutzen
In der Vergangenheit gab es mal den js2fs Adapter, mit dem ich dann meine Javascripts mit der IDE (Visual Studio Code) bearbeiten und aktualisieren konnte.
Gibt es in der Zwischenzeit eine andere Möglichkeit, da der js2fs Adapter bei mir nicht mehr funktioniert und scheinbar auch nicht mehr gepflegt wird.
In der Version 0.1.6 kommt eine Fehlermeldung "startInstance js2fs-community.0: cannot find start file!"
Konkrete Frage: Gibt es eine Alternative?
Da meine Scripts ziemlich groß sind, ist die Bearbeitung in der IDE komfortabler. -
RE: Socket.io und conn.js
@Homoran Erledigt. Ich hoffe mein English reicht dafür.
Socket.io and conn.js and example index.html: No states #32 -
RE: Socket.io und conn.js
@Homoran Noch ein kleiner Nachtrag: Jetzt bin ich auf die Idee gekommen, Zwischenversionen zu installieren. Die Versionen 3.0.9, 3.0.11 und auch 3.0.12 scheinen auch zu funktionieren und es werden die States übertragen.
Der Bug scheint nur in der Version 3.0.13 zu sein. Fehler lässt sich reproduzieren. -
RE: Socket.io und conn.js
@Homoran Nein, Alle anderen Adapter sind auf dem neuesten Stand.
-
Socket.io und conn.js
Hallo,
ich verwendet Socket.io mit Websocket um von meiner eigenen Visualisierung Daten vom iobroker zu erhalten.
socket.io habe ich auf "Nur Web-Sockets" eingestellt.
In meinem Script verwende ich die im Git-Repository conn.js und die index.html Datei mit einer Abwandlung:servConn.init( { name: 'mobile.0', // optional - default 'vis.0' connLink: 'http://localhost:8084', // optional URL of the socket.io adapter socketSession: '', // optional - used by authentication socketForceWebSockets: true, // Eintrag wegen fehlerhafter Kommunikation, Adapter wurde auch auf Websocket eingestellt },
Jetzt zu meinem Problem:
Wenn ich auf die neuste Socket.io Version wechsele, dann erhalte ich keine Verbindung, bzw. keine Daten mehr.
Mit und ohne Websocket erhalte ich zwar eine Verbindung, erhalte aber keine States.
Solange ich auf sochet.io Version 2.1.2 bin, funktioniert alles und ich erhalte ca. 8000 States. Wenn ich auf Version 3.0.13 gehe, bei gleichem index.html kommen keine States mehr an.Was mache ich falsch?