NEWS
ELV Raumklimastation RS 500 bzw. dnt RoomLogg Pro
-
Hallo,
ich wende mich nun doch mit einem neuen Topic ans Forum, weil ich selbst nicht weiter komme.
Meine Entwicklerkentnisse sind eher mäßig, bisher hangelte ich mich bei allen meinen Projekten durch google immer irgendwie zum Ziel. Aber eher so trial error oder learning by doing
Jetzt komme ich leider nicht weiter.Bin ioBroker Neuling (nutze ich erst seit ca. 3 Tagen) und darüber hinaus auch sehr Linux unerfahren (iObroker läuft auf einem Raspberry)
Ich brauche Hilfe!
Ausgangssituation:
- ioBroker läuft auf einem RaspberryPi2 (Debian Bullseye)
- node.js und NPM sind auf aktuellem Stand:
- Node.js: v18.11.0
- NPM: 8.19.2
- ein dnt RoomLogg Pro mit 8 verbundenen Sensoren ist per USB an dem Pi, auf dem auch der ioBroker läuft, angeschlossen
Was ich erreichen möchte:
Die Temperatur und Luftfeuchtedaten als Objekte im ioBroker zur Verfügung haben, gerne natürlich auch historische Daten als json etc.Wie weit ich bisher bin:
Die Daten der Raumklimastation lassen sich wohl relativ problemlos auslesen. Hier hat schonmal jemand geniale vorarbeit geleistet und ein github verfasst: juergen-rocks/raumklimaIch weiß so also, dass ich definitiv irgendwie an die Daten der Raumklimastation komme. Ich habe also weiter recherchiert und bin auch folgenden Foreneintrag hier im Forum gestoßen:
[Vorlage] Wetterdatenempfänger USB-WDE1-2 von ELVDa dieser USB Wetterempfänger vom gleichen Hersteller wie meine Raumklimastation ist, wollte ich das Skript ausprobieren.
Also habe ich mich etwas mit dem Javascript Adapter befasst und auch durch eine nützliche Antwort dort herausgefunden, dass ein "serialport" bei Zusätzliche NPM-Module in der Instanzeinstellung nötig ist.
Leider kommt dann in dem Script der Fehler:TypeError: SerialPort is not a constructor
Nach Google Bemühungen fand ich heraus, dass das wohl daran liegt, dass das Script noch mit einer SerialPort Version älter als 9.X erstellt worden ist.
Ich probierte also auch, in den Javascript Instanzeinstellungen serialport@9.2.8 als npm Mpodul hinzuzufügen.
Leider kamen dann diverse, nicht mehr reproduzierbare Fehler dazu. Habe dann einen Fehler nach dem anderen gegoogled.
Ich fand dann folgende Forenbeiträge: Script Hilfe für Abfrage Serielle Kommunikation gesucht!:Scheinbar lässt sich mein Vorhaben also doch mit der aktuellen SerialPort Version realisieren. Ich habe also einee frtische SD Karte aufgesetzt mit neuer ioBroker umgebung um nochmal sauber anzufangen.
Dort habe ich wieder serialport als npm Modul im Javascript Adapter hinzugefügt und habe mich an diesen Code gehalten: SerialPort Usage
Und tatsächlich (meine Freude war riesig ;)) bekomme ich mit folgendem Code:
const { SerialPort } = require('serialport') // Create a port const port = new SerialPort({ path: '/dev/ttyAMA0', baudRate: 57600, }) console.log(port);
Auch diese Ausgabe:
javascript.0 (2751) script.js.raumklimastation: {'_readableState':{'objectMode':false,'highWaterMark':65536,'buffer':{'head':null,'tail':null,'length':0},'length':0,'pipes':[],'flowing':null,'ended':false,'endEmitted':false,'reading':false,'constructed':true,'sync':true,'needReadable':false,'emittedReadable':false,'readableListening':false,'resumeScheduled':false,'errorEmitted':false,'emitClose':true,'autoDestroy':true,'destroyed':false,'errored':null,'closed':false,'closeEmitted':false,'defaultEncoding':'utf8','awaitDrainWriters':null,'multiAwaitDrain':false,'readingMore':false,'dataEmitted':false,'decoder':null,'encoding':null},'_events':{},'_eventsCount':0,'_maxListeners':100,'_writableState':{'objectMode':false,'highWaterMark':65536,'finalCalled':false,'needDrain':false,'ending':false,'ended':false,'finished':false,'destroyed':false,'decodeStrings':true,'defaultEncoding':'utf8','length':0,'writing':false,'corked':0,'sync':true,'bufferProcessing':false,'writecb':null,'writelen':0,'afterWriteTickInfo':null,'buffered':[],'bufferedIndex':0,'allBuffers':true,'allNoop':true,'pendingcb':0,'constructed':true,'prefinished':false,'errorEmitted':false,'emitClose':true,'autoDestroy':true,'errored':null,'closed':false,'closeEmitted':false},'allowHalfOpen':true,'settings':{'autoOpen':true,'endOnClose':false,'highWaterMark':65536,'binding':{},'path':'/dev/ttyAMA0','baudRate':57600},'opening':true,'closing':false,'_pool':{'type':'Buffer','data':[48,98,109,5,72,25,50,5,48,98,109,5,72,25,50,5,49,54,54,53,57,52,50,53,57,54,52,56,50,125,13,10,232,17,0,0,176,0,0,0,42,52,13,10,36,56,13,10,112,109,101,115,115,97,103,101,13,10,36,49,13,10,42,13,10,36,50,57,13,10,115,121,115,116,101,109,46,104,111,115,116,46,112,97,108,97,122,122,111,112,105,46,102,114,101,101,109,101,109,13,10,36,57,55,13,10,123,34,118,97,108,34,58,51,54,57,44,34,97,99,107,34,58,116,114,117,101,44,34,116,115,34,58,49,54,GEKUERZT]},'_kMinPoolSpace':128}
Habe das dann auch in einen JSON Editor kopiert und man sieht tatsächlich ein sinnvolles Gerüst.
Jetzt habe ich irgendwie probiert, diese "Buffer data" so auszulesen, dass ich irgendwie ein ähnliches Gerüst bekomme wie bei github beschrieben, habe es aber nicht geschafft.Kann mir irgendjemand helfen?
Ich hoffe der Text ist nicht zu lange gewesen und es sind alle benötigten Informationen enthalten.