NEWS
Plötzlich ReferenceError: request is not defined
-
Seit ca vier Jahren nutze ich folgendes Script zum Auslesen meines Dachs BHKW von Senertec:
const url="http://glt:pass@192.168.0.76:8080/getKey?k=Hka_Mw1.Temp.sbAussen&k=Hka_Bd.ulArbeitThermHka&k=Hka_Bd.ulArbeitElektr&k=Hka_Bd.ulBetriebssekunden&k=Hka_Mw1.Temp.sbRuecklauf&k=Hka_Mw1.Temp.sbVorlauf&k=Wartung_Cache.fStehtAn&k=Hka_Mw1.Temp.sbFuehler1&k=Hka_Mw1.usDrehzahl&k=Hka_Mw1.Aktor.fUPKuehlung&k=Hka_Bd_Stat.uchSeriennummer&k=Hka_Bd_Stat.uchTeilenummer&k=Hka_Bd_Stat.ulInbetriebnahmedatum&k=Wartung_Cache.ulBetriebssekundenBei&k=Wartung_Cache.ulZeitstempel&k=Wartung_Cache.usIntervall&k=Hka_Mw1.ulMotorlaufsekunden&k=Hka_Mw1.Aktor.fStoerung&k=Hka_Mw1.Aktor.fWartung&k=Hka_Mw1.Aktor.fUPVordruck&k=Hka_Mw1.sWirkleistung&k=Hka_Mw1.Temp.sAbgasHKA&k=Hka_Mw1.Temp.sAbgasMotor&k=Hka_Mw1.Temp.sKapsel&k=Hka_Mw1.Temp.sbFreigabeModul&k=Hka_Mw1.Temp.sbGen&k=Hka_Mw1.Temp.sbMotor&k=Hka_Mw1.Temp.sbRegler&k=Hka_Mw1.Solltemp.sbRuecklauf&k=Hka_Mw1.Solltemp.sbVorlauf&k=Hka_Bd.ulAnzahlStarts&k=Hka_Bd.ulArbeitElektr&k=Hka_Bd.ulArbeitThermHka&k=Hka_Bd.ulArbeitThermKon&k=BD3112.Hka_Bd.ulBetriebssekunden&k=BD3112.Hka_Bd.ulAnzahlStarts&k=BD3112.Hka_Bd.ulArbeitElektr&k=BD3112.Hka_Bd.ulArbeitThermHka&k=BD3112.Hka_Bd.ulArbeitThermKon&k=Hka_Bd.bStoerung&k=Hka_Bd.bWarnung"; const idPath = '0_userdata.0.BHKW.'; const idRLT = idPath + 'RL-Temperatur'; const idBetrieb = idPath + 'Betriebsstunden'; const idAT = idPath + 'Aussen-Temperatur'; const idATh = idPath + 'Heizkreis-Energie'; const idAEl = idPath + 'Elektroenergie'; const idVLT = idPath + "VL-Temperatur"; const idTF1 = idPath + "Temperatur_Fuehler_1"; const idDZ = idPath + "Motordrehzahl"; const idWN = idPath + "Wartung-notwendig"; const idST = idPath + "Stoerung"; const idWR = idPath + "Wartungsrelais"; const idAKK = idPath + "Interne_Umwaelzpumpe"; const idSNR = idPath + "Seriennummer"; const idTNR = idPath + "Teilenummer"; const idINB = idPath + "Inbetriebnahmedatum"; const idWLZT = idPath + "Letzte_Wartung"; const idWAM = idPath + "LWartung_am"; const idWINT = idPath + "Wartungsinterval"; const idALZ = idPath + "Motorlaufzeit-Start"; const idUPV = idPath + "UP_Vordruck"; const idWLST = idPath + "A_Wirkleistung"; const idWAIN= idPath + "Wartung_in_h"; const idTDA= idPath + "Abgastemp_Dachs"; const idTMO= idPath + "Abgastemp_Motor"; const idTKA= idPath + "Kapseltemperatur"; const idTFR= idPath + "Freigabemodul"; const idTEIN= idPath + "Dachs-Eintrittstemperatur"; const idTKM= idPath + "Kuehlwasser-Motor"; const idTIR= idPath + "Interne_Reglertemperatur"; const idSOR= idPath + "Solltemperatur_Ruecklauf"; const idSOV= idPath + "Solltemperatur_Vorlauf"; const idSTAR= idPath + "Anzahl-Starts"; const idSEL= idPath + "Erzeugte_elektrische_Arbeit"; const idSWEN= idPath + "Erzeugte_thermische_Arbeit"; const idSWEK= idPath + "Erzeugte_thermische_Arbeit_Kondenser"; const idSEL31= idPath + "Erzeugte_elektrische_Arbeit_31_12"; const idSWEN31= idPath + "Erzeugte_thermische_Arbeit_31_12"; const idSWEK31= idPath + "Erzeugte_thermische_Arbeit_Kondenser_31_12"; const idSTAR31= idPath + "Anzahl-Starts_31_12"; const idBetrieb31 = idPath + 'Betriebsstunden_31_12'; const idSTNR = idPath + 'Aktuelle_Stoerung_Nr'; const idWARN = idPath + 'Aktueller_Warncode'; const altzeit = idPath + 'Betriebsstunden-alt' //var neuzeit //neuzeit=getState(idBetrieb).val; function getBHKW() { request(url, function(error, response, body) { let arr = body.split('\n'); for(let i = 0; i < arr.length; i++) { let sensor = arr[i].split('='); if(sensor[0].indexOf('Temp.sbRuecklauf') != -1) setState(idRLT, parseFloat(sensor[1]), true); if(sensor[0].indexOf('ulBetriebssekunden') != -1) setState(altzeit,parseFloat(sensor[1]), true ); // Stunden mit 2 Nachkommastellen if(getState(idBetrieb).val<getState(altzeit).val) setState(idBetrieb, getState(altzeit).val, true); //nur höhere Werte loggen if(sensor[0].indexOf('sbAussen') != -1) setState(idAT, parseFloat(sensor[1]), true); if(sensor[0].indexOf('ulArbeitThermHka') != -1) setState(idATh, parseFloat(sensor[1]), true); if(sensor[0].indexOf('ulArbeitElektr') != -1) setState(idAEl, parseFloat(sensor[1]), true); if(sensor[0].indexOf('Temp.sbVorlauf') != -1) setState(idVLT, parseFloat(sensor[1]), true); if(sensor[0].indexOf('sbFuehler1') != -1) setState(idTF1, parseFloat(sensor[1]), true); if(sensor[0].indexOf('usDrehzahl') != -1) setState(idDZ, parseFloat(sensor[1]), true); if(sensor[0].indexOf('uchSeriennummer') != -1) setState(idSNR, parseFloat(sensor[1]), true); if(sensor[0].indexOf('uchTeilenummer') != -1) setState(idTNR, parseFloat(sensor[1]), true); if(sensor[0].indexOf('ulInbetriebnahmedatum') != -1) setState(idINB, parseFloat(sensor[1]), true); if(sensor[0].indexOf('ulBetriebssekundenBei') != -1) setState(idWLZT, parseFloat(sensor[1]), true); if(sensor[0].indexOf('ulAnzahlStarts') != -1) setState(idSTAR, parseFloat(sensor[1]), true); if(sensor[0].indexOf('ulZeitstempel') != -1) setState(idWAM, Math.round(parseFloat(sensor[1])), true); if(sensor[0].indexOf('usIntervall') != -1) setState(idWINT, parseFloat(sensor[1]), true); if(sensor[0].indexOf('ulMotorlaufsekunden') != -1) setState(idALZ, parseFloat(sensor[1]), true); if(sensor[0].indexOf('sWirkleistung') != -1) setState(idWLST, parseFloat(sensor[1]), true); if(sensor[0].indexOf('sAbgasHKA') != -1) setState(idTDA, parseFloat(sensor[1]), true); if(sensor[0].indexOf('sAbgasMotor') != -1) setState(idTMO, parseFloat(sensor[1]), true); if(sensor[0].indexOf('sKapsel') != -1) setState(idTKA, parseFloat(sensor[1]), true); if(sensor[0].indexOf('sbFreigabeModul') != -1) setState(idTFR, parseFloat(sensor[1]), true); if(sensor[0].indexOf('sbGen') != -1) setState(idTEIN, parseFloat(sensor[1]), true); if(sensor[0].indexOf('sbMotor') != -1) setState(idTKM, parseFloat(sensor[1]), true); if(sensor[0].indexOf('sbRegler') != -1) setState(idTIR, parseFloat(sensor[1]), true); if(sensor[0].indexOf('Solltemp.sbRuecklauf') != -1) setState(idSOR, parseFloat(sensor[1]), true); if(sensor[0].indexOf('Solltemp.sbVorlauf') != -1) setState(idSOV, parseFloat(sensor[1]), true); if(sensor[0].indexOf('Hka_Bd.ulArbeitElektr') != -1) setState(idSEL, parseFloat(sensor[1]), true); if(sensor[0].indexOf('Hka_Bd.ulArbeitThermHka') != -1) setState(idSWEN, parseFloat(sensor[1]), true); if(sensor[0].indexOf('Hka_Bd.ulArbeitThermKon') != -1) setState(idSWEK, parseFloat(sensor[1]), true); if(sensor[0].indexOf('BD3112.Hka_Bd.ulArbeitElektr') != -1) setState(idSEL31, parseFloat(sensor[1]), true); if(sensor[0].indexOf('BD3112.Hka_Bd.ulArbeitThermHka') != -1) setState(idSWEN31, parseFloat(sensor[1]), true); if(sensor[0].indexOf('BD3112.Hka_Bd.ulArbeitThermKon') != -1) setState(idSWEK31, parseFloat(sensor[1]), true); if(sensor[0].indexOf('BD3112.Hka_Bd.ulAnzahlStarts') != -1) setState(idSTAR31, parseFloat(sensor[1]), true); if(sensor[0].indexOf('BD3112.Hka_Bd.ulBetriebssekunden') != -1) setState(idBetrieb31, parseFloat(sensor[1]), true); if(sensor[0].indexOf('Hka_Bd.bStoerung') != -1) setState(idSTNR, parseFloat(sensor[1])+100, true); if(sensor[0].indexOf('Hka_Bd.bWarnung') != -1) setState(idWARN, parseFloat(sensor[1])+600, true); if(sensor[0].indexOf('fStehtAn') != -1) setState(idWN, toBoolean(sensor[1]), true); if(sensor[0].indexOf('fUPKuehlung') != -1) setState(idAKK, toBoolean(sensor[1]), true); if(sensor[0].indexOf('fStoerung') != -1) setState(idST, toBoolean(sensor[1]), true); if(sensor[0].indexOf('fWartung') != -1) setState(idWR, toBoolean(sensor[1]), true); if(sensor[0].indexOf('fUPVordruck') != -1) setState(idUPV, toBoolean(sensor[1]), true); } }); } getBHKW(); // Script start schedule('* * * * *', getBHKW); // jede Minute
Am Samstag habe ich einige Adapter upgedatet. Seitdem kommt folgende Fehlermeldung:
script.js.common.Senertec.Daten_auslesen: ReferenceError: request is not defined
Das BHKW und auch den Rechner des ioBrokers habe ich neu gebootet. Bringt aber nichts.
Rufe ich die Abfrageseite in einem Internetbrowser bekomme ich, wie vorher auch die DatenHier die Infos zum Computer:
Plattform docker Betriebssystem linux Architektur x64 CPUs 16 Geschwindigkeit 1200 MHz Modell AMD Ryzen 9 5900HX with Radeon Graphics RAM 30.77 GB System-Betriebszeit 1 T. 13:00:48 Node.js v18.17.1
Hat sich etwas an der Programmierung geändert, dass das Script nicht mehr läuft?
-
@xwing
Hast du vor dem Update einer MAJOR Release den Changelog angesehen? MAJOR Release enthalten oft BREAKING changes...Wahrscheinlich nicht, denn dort ist klar dokumentiert, dass REQUEST nicht mehr standardmäig verfügbar ist:
https://github.com/ioBroker/ioBroker.javascript/blob/master/CHANGELOG_OLD.md#800-2024-04-05
Zitat:
(klein0r) Breaking change: Removed support for binary states (deprecated since v6.2.0)
(klein0r) Breaking change: Protected filesystem (iobroker-data/files) to prevent direct file writes
(klein0r) Breaking change: request property has been removed of the sandbox (require the module if still needed)Das Verhalten ist also ein dokumentierter breaking change und kein Bug.
Require request explizit oder wechsle auf axios / httpGet .Ansonsten empfehle ich mal di Suche hier im Forum. Da solltest du rasch zu diesem Thema fündig werden.
-
@mcm1957 said in Plötzlich ReferenceError: request is not defined:
Require request
Ich habe zwar wenig verstanden, von dem was Du mir als Gelegenheitsprogrammierer sagen wolltest.
Die Zeile
const request = require('request');
oben in mein Script einzutragen hat geholfen.
-
@xwing sagte in Plötzlich ReferenceError: request is not defined:
Die Zeile
dann hast du es verstanden
Trotzdem solltest du request durch httpGet ersetzen -
Ich habe mal versucht das mit httpGet umzusetzen. Die Dokumentation und Verwendung von Axios ist wohl nur was für Hardcore Entwickler. Da habe ich 0 verstanden.
In Javascript bin ich nicht firm und habe mich an diversen Posts hier im Forum und im Netz versucht zu orientieren. Das Ursprungsscript habe ich, wie gesagt vor 4 Jahren im Forum gefunden und angepasst.
Inzwischen bekomme ich bei meinen Versuchen zwar keine Fehlermeldungen mehr, aber es werden auch keine Werte in die Objekte geschrieben.const url="http://glt:ABCD@192.168.0.76:8080/getKey?k=Hka_Mw1.Temp.sbAussen&k=Hka_Bd.ulArbeitThermHka&k=Hka_Bd.ulArbeitElektr&k=Hka_Bd.ulBetriebssekunden&k=Hka_Mw1.Temp.sbRuecklauf&k=Hka_Mw1.Temp.sbVorlauf&k=Wartung_Cache.fStehtAn&k=Hka_Mw1.Temp.sbFuehler1&k=Hka_Mw1.usDrehzahl&k=Hka_Mw1.Aktor.fUPKuehlung&k=Hka_Bd_Stat.uchSeriennummer&k=Hka_Bd_Stat.uchTeilenummer&k=Hka_Bd_Stat.ulInbetriebnahmedatum&k=Wartung_Cache.ulBetriebssekundenBei&k=Wartung_Cache.ulZeitstempel&k=Wartung_Cache.usIntervall&k=Hka_Mw1.ulMotorlaufsekunden&k=Hka_Mw1.Aktor.fStoerung&k=Hka_Mw1.Aktor.fWartung&k=Hka_Mw1.Aktor.fUPVordruck&k=Hka_Mw1.sWirkleistung&k=Hka_Mw1.Temp.sAbgasHKA&k=Hka_Mw1.Temp.sAbgasMotor&k=Hka_Mw1.Temp.sKapsel&k=Hka_Mw1.Temp.sbFreigabeModul&k=Hka_Mw1.Temp.sbGen&k=Hka_Mw1.Temp.sbMotor&k=Hka_Mw1.Temp.sbRegler&k=Hka_Mw1.Solltemp.sbRuecklauf&k=Hka_Mw1.Solltemp.sbVorlauf&k=Hka_Bd.ulAnzahlStarts&k=Hka_Bd.ulArbeitElektr&k=Hka_Bd.ulArbeitThermHka&k=Hka_Bd.ulArbeitThermKon&k=BD3112.Hka_Bd.ulBetriebssekunden&k=BD3112.Hka_Bd.ulAnzahlStarts&k=BD3112.Hka_Bd.ulArbeitElektr&k=BD3112.Hka_Bd.ulArbeitThermHka&k=BD3112.Hka_Bd.ulArbeitThermKon&k=Hka_Bd.bStoerung&k=Hka_Bd.bWarnung"; //const request = require('request'); const idPath = '0_userdata.0.BHKW.'; const idRLT = idPath + 'RL-Temperatur'; const idBetrieb = idPath + 'Betriebsstunden'; const idAT = idPath + 'Aussen-Temperatur'; const idATh = idPath + 'Heizkreis-Energie'; const idAEl = idPath + 'Elektroenergie'; const idVLT = idPath + "VL-Temperatur"; const idTF1 = idPath + "Temperatur_Fuehler_1"; const idDZ = idPath + "Motordrehzahl"; const idWN = idPath + "Wartung-notwendig"; const idST = idPath + "Stoerung"; const idWR = idPath + "Wartungsrelais"; const idAKK = idPath + "Interne_Umwaelzpumpe"; const idSNR = idPath + "Seriennummer"; const idTNR = idPath + "Teilenummer"; const idINB = idPath + "Inbetriebnahmedatum"; const idWLZT = idPath + "Letzte_Wartung"; const idWAM = idPath + "LWartung_am"; const idWINT = idPath + "Wartungsinterval"; const idALZ = idPath + "Motorlaufzeit-Start"; const idUPV = idPath + "UP_Vordruck"; const idWLST = idPath + "A_Wirkleistung"; const idWAIN= idPath + "Wartung_in_h"; const idTDA= idPath + "Abgastemp_Dachs"; const idTMO= idPath + "Abgastemp_Motor"; const idTKA= idPath + "Kapseltemperatur"; const idTFR= idPath + "Freigabemodul"; const idTEIN= idPath + "Dachs-Eintrittstemperatur"; const idTKM= idPath + "Kuehlwasser-Motor"; const idTIR= idPath + "Interne_Reglertemperatur"; const idSOR= idPath + "Solltemperatur_Ruecklauf"; const idSOV= idPath + "Solltemperatur_Vorlauf"; const idSTAR= idPath + "Anzahl-Starts"; const idSEL= idPath + "Erzeugte_elektrische_Arbeit"; const idSWEN= idPath + "Erzeugte_thermische_Arbeit"; const idSWEK= idPath + "Erzeugte_thermische_Arbeit_Kondenser"; const idSEL31= idPath + "Erzeugte_elektrische_Arbeit_31_12"; const idSWEN31= idPath + "Erzeugte_thermische_Arbeit_31_12"; const idSWEK31= idPath + "Erzeugte_thermische_Arbeit_Kondenser_31_12"; const idSTAR31= idPath + "Anzahl-Starts_31_12"; const idBetrieb31 = idPath + 'Betriebsstunden_31_12'; const idSTNR = idPath + 'Aktuelle_Stoerung_Nr'; const idWARN = idPath + 'Aktueller_Warncode'; const altzeit = idPath + 'Betriebsstunden-alt' //var neuzeit //neuzeit=getState(idBetrieb).val; function getBHKW() { // httpGet('http://glt:ABCD@192.168.0.76:8080/getKey?k=Hka_Mw1.Temp.sbAussen&k=Hka_Bd.ulArbeitThermHka&k=Hka_Bd.ulArbeitElektr&k=Hka_Bd.ulBetriebssekunden&k=Hka_Mw1.Temp.sbRuecklauf&k=Hka_Mw1.Temp.sbVorlauf&k=Wartung_Cache.fStehtAn&k=Hka_Mw1.Temp.sbFuehler1&k=Hka_Mw1.usDrehzahl&k=Hka_Mw1.Aktor.fUPKuehlung&k=Hka_Bd_Stat.uchSeriennummer&k=Hka_Bd_Stat.uchTeilenummer&k=Hka_Bd_Stat.ulInbetriebnahmedatum&k=Wartung_Cache.ulBetriebssekundenBei&k=Wartung_Cache.ulZeitstempel&k=Wartung_Cache.usIntervall&k=Hka_Mw1.ulMotorlaufsekunden&k=Hka_Mw1.Aktor.fStoerung&k=Hka_Mw1.Aktor.fWartung&k=Hka_Mw1.Aktor.fUPVordruck&k=Hka_Mw1.sWirkleistung&k=Hka_Mw1.Temp.sAbgasHKA&k=Hka_Mw1.Temp.sAbgasMotor&k=Hka_Mw1.Temp.sKapsel&k=Hka_Mw1.Temp.sbFreigabeModul&k=Hka_Mw1.Temp.sbGen&k=Hka_Mw1.Temp.sbMotor&k=Hka_Mw1.Temp.sbRegler&k=Hka_Mw1.Solltemp.sbRuecklauf&k=Hka_Mw1.Solltemp.sbVorlauf&k=Hka_Bd.ulAnzahlStarts&k=Hka_Bd.ulArbeitElektr&k=Hka_Bd.ulArbeitThermHka&k=Hka_Bd.ulArbeitThermKon&k=BD3112.Hka_Bd.ulBetriebssekunden&k=BD3112.Hka_Bd.ulAnzahlStarts&k=BD3112.Hka_Bd.ulArbeitElektr&k=BD3112.Hka_Bd.ulArbeitThermHka&k=BD3112.Hka_Bd.ulArbeitThermKon&k=Hka_Bd.bStoerung&k=Hka_Bd.bWarnung', {timeout:2000},(err,response) => { httpGet('http://glt:ABCD@192.168.0.76:8080/getKey?k=Hka_Mw1.Temp.sbAussen&k=Hka_Bd.ulArbeitThermHka&k=Hka_Bd.ulArbeitElektr&k=Hka_Bd.ulBetriebssekunden&k=Hka_Mw1.Temp.sbRuecklauf&k=Hka_Mw1.Temp.sbVorlauf&k=Wartung_Cache.fStehtAn&k=Hka_Mw1.Temp.sbFuehler1&k=Hka_Mw1.usDrehzahl&k=Hka_Mw1.Aktor.fUPKuehlung&k=Hka_Bd_Stat.uchSeriennummer&k=Hka_Bd_Stat.uchTeilenummer&k=Hka_Bd_Stat.ulInbetriebnahmedatum&k=Wartung_Cache.ulBetriebssekundenBei&k=Wartung_Cache.ulZeitstempel&k=Wartung_Cache.usIntervall&k=Hka_Mw1.ulMotorlaufsekunden&k=Hka_Mw1.Aktor.fStoerung&k=Hka_Mw1.Aktor.fWartung&k=Hka_Mw1.Aktor.fUPVordruck&k=Hka_Mw1.sWirkleistung&k=Hka_Mw1.Temp.sAbgasHKA&k=Hka_Mw1.Temp.sAbgasMotor&k=Hka_Mw1.Temp.sKapsel&k=Hka_Mw1.Temp.sbFreigabeModul&k=Hka_Mw1.Temp.sbGen&k=Hka_Mw1.Temp.sbMotor&k=Hka_Mw1.Temp.sbRegler&k=Hka_Mw1.Solltemp.sbRuecklauf&k=Hka_Mw1.Solltemp.sbVorlauf&k=Hka_Bd.ulAnzahlStarts&k=Hka_Bd.ulArbeitElektr&k=Hka_Bd.ulArbeitThermHka&k=Hka_Bd.ulArbeitThermKon&k=BD3112.Hka_Bd.ulBetriebssekunden&k=BD3112.Hka_Bd.ulAnzahlStarts&k=BD3112.Hka_Bd.ulArbeitElektr&k=BD3112.Hka_Bd.ulArbeitThermHka&k=BD3112.Hka_Bd.ulArbeitThermKon&k=Hka_Bd.bStoerung&k=Hka_Bd.bWarnung', { timeout: 2000, responseType: 'arraybuffer' }, async (err, response) => { if (err) { console.error(err); } // }); //request(url, function(error, response, body) { let arr = response; // let arr = body.split('\n'); for(let i = 0; i < arr.length; i++) { let sensor = arr[i].split('='); if(sensor[0].indexOf('Temp.sbRuecklauf') != -1) setState(idRLT, parseFloat(sensor[1]), true); if(sensor[0].indexOf('ulBetriebssekunden') != -1) setState(altzeit,parseFloat(sensor[1]), true ); // Stunden mit 2 Nachkommastellen if(getState(idBetrieb).val<getState(altzeit).val) setState(idBetrieb, getState(altzeit).val, true); //nur höhere Werte loggen if(sensor[0].indexOf('sbAussen') != -1) setState(idAT, parseFloat(sensor[1]), true); if(sensor[0].indexOf('ulArbeitThermHka') != -1) setState(idATh, parseFloat(sensor[1]), true); if(sensor[0].indexOf('ulArbeitElektr') != -1) setState(idAEl, parseFloat(sensor[1]), true); if(sensor[0].indexOf('Temp.sbVorlauf') != -1) setState(idVLT, parseFloat(sensor[1]), true); if(sensor[0].indexOf('sbFuehler1') != -1) setState(idTF1, parseFloat(sensor[1]), true); if(sensor[0].indexOf('usDrehzahl') != -1) setState(idDZ, parseFloat(sensor[1]), true); if(sensor[0].indexOf('uchSeriennummer') != -1) setState(idSNR, parseFloat(sensor[1]), true); if(sensor[0].indexOf('uchTeilenummer') != -1) setState(idTNR, parseFloat(sensor[1]), true); if(sensor[0].indexOf('ulInbetriebnahmedatum') != -1) setState(idINB, parseFloat(sensor[1]), true); if(sensor[0].indexOf('ulBetriebssekundenBei') != -1) setState(idWLZT, parseFloat(sensor[1]), true); if(sensor[0].indexOf('ulAnzahlStarts') != -1) setState(idSTAR, parseFloat(sensor[1]), true); if(sensor[0].indexOf('ulZeitstempel') != -1) setState(idWAM, Math.round(parseFloat(sensor[1])), true); if(sensor[0].indexOf('usIntervall') != -1) setState(idWINT, parseFloat(sensor[1]), true); if(sensor[0].indexOf('ulMotorlaufsekunden') != -1) setState(idALZ, parseFloat(sensor[1]), true); if(sensor[0].indexOf('sWirkleistung') != -1) setState(idWLST, parseFloat(sensor[1]), true); if(sensor[0].indexOf('sAbgasHKA') != -1) setState(idTDA, parseFloat(sensor[1]), true); if(sensor[0].indexOf('sAbgasMotor') != -1) setState(idTMO, parseFloat(sensor[1]), true); if(sensor[0].indexOf('sKapsel') != -1) setState(idTKA, parseFloat(sensor[1]), true); if(sensor[0].indexOf('sbFreigabeModul') != -1) setState(idTFR, parseFloat(sensor[1]), true); if(sensor[0].indexOf('sbGen') != -1) setState(idTEIN, parseFloat(sensor[1]), true); if(sensor[0].indexOf('sbMotor') != -1) setState(idTKM, parseFloat(sensor[1]), true); if(sensor[0].indexOf('sbRegler') != -1) setState(idTIR, parseFloat(sensor[1]), true); if(sensor[0].indexOf('Solltemp.sbRuecklauf') != -1) setState(idSOR, parseFloat(sensor[1]), true); if(sensor[0].indexOf('Solltemp.sbVorlauf') != -1) setState(idSOV, parseFloat(sensor[1]), true); if(sensor[0].indexOf('Hka_Bd.ulArbeitElektr') != -1) setState(idSEL, parseFloat(sensor[1]), true); if(sensor[0].indexOf('Hka_Bd.ulArbeitThermHka') != -1) setState(idSWEN, parseFloat(sensor[1]), true); if(sensor[0].indexOf('Hka_Bd.ulArbeitThermKon') != -1) setState(idSWEK, parseFloat(sensor[1]), true); if(sensor[0].indexOf('BD3112.Hka_Bd.ulArbeitElektr') != -1) setState(idSEL31, parseFloat(sensor[1]), true); if(sensor[0].indexOf('BD3112.Hka_Bd.ulArbeitThermHka') != -1) setState(idSWEN31, parseFloat(sensor[1]), true); if(sensor[0].indexOf('BD3112.Hka_Bd.ulArbeitThermKon') != -1) setState(idSWEK31, parseFloat(sensor[1]), true); if(sensor[0].indexOf('BD3112.Hka_Bd.ulAnzahlStarts') != -1) setState(idSTAR31, parseFloat(sensor[1]), true); if(sensor[0].indexOf('BD3112.Hka_Bd.ulBetriebssekunden') != -1) setState(idBetrieb31, parseFloat(sensor[1]), true); if(sensor[0].indexOf('Hka_Bd.bStoerung') != -1) setState(idSTNR, parseFloat(sensor[1])+100, true); if(sensor[0].indexOf('Hka_Bd.bWarnung') != -1) setState(idWARN, parseFloat(sensor[1])+600, true); if(sensor[0].indexOf('fStehtAn') != -1) setState(idWN, toBoolean(sensor[1]), true); if(sensor[0].indexOf('fUPKuehlung') != -1) setState(idAKK, toBoolean(sensor[1]), true); if(sensor[0].indexOf('fStoerung') != -1) setState(idST, toBoolean(sensor[1]), true); if(sensor[0].indexOf('fWartung') != -1) setState(idWR, toBoolean(sensor[1]), true); if(sensor[0].indexOf('fUPVordruck') != -1) setState(idUPV, toBoolean(sensor[1]), true); } }); } getBHKW(); // Script start schedule('* * * * *', getBHKW); // jede Minute
Ich habe es auch mit
let arr = response.data;
probiert. Auch da keine Fehlermeldung, aber auch keine Eintragungen in die Objekte.
Wenn ich das richtig interpretiere wird mit dem httpGet eine Variable "response" erzeugt, die in die Variable "arr" kopierte wird. Die wird dann in einer Schleife aufgedröselt und die Ergebnisse landen dann in den Objekten. Richtig?
Was mache ich da falsch?
-
@xwing sagte in Plötzlich ReferenceError: request is not defined:
Die Dokumentation und Verwendung von Axios ist wohl nur was für Hardcore Entwickler.
Wenn Du
httpGet
nutzt, hast Du nichts mit axios zu tun. Das ist ja eine Alternative. -
Gerne hinzufügen, was dir im Upgrade-Guide gefehlt hat:
https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/upgrade-guide.md
So sollte es passen (auch, wenn ich nicht verstehe warum Du mit einem Array über den kompletten Text gehst?)
const url = 'http://glt:ABCD@192.168.0.76:8080/getKey?k=Hka_Mw1.Temp.sbAussen&k=Hka_Bd.ulArbeitThermHka&k=Hka_Bd.ulArbeitElektr&k=Hka_Bd.ulBetriebssekunden&k=Hka_Mw1.Temp.sbRuecklauf&k=Hka_Mw1.Temp.sbVorlauf&k=Wartung_Cache.fStehtAn&k=Hka_Mw1.Temp.sbFuehler1&k=Hka_Mw1.usDrehzahl&k=Hka_Mw1.Aktor.fUPKuehlung&k=Hka_Bd_Stat.uchSeriennummer&k=Hka_Bd_Stat.uchTeilenummer&k=Hka_Bd_Stat.ulInbetriebnahmedatum&k=Wartung_Cache.ulBetriebssekundenBei&k=Wartung_Cache.ulZeitstempel&k=Wartung_Cache.usIntervall&k=Hka_Mw1.ulMotorlaufsekunden&k=Hka_Mw1.Aktor.fStoerung&k=Hka_Mw1.Aktor.fWartung&k=Hka_Mw1.Aktor.fUPVordruck&k=Hka_Mw1.sWirkleistung&k=Hka_Mw1.Temp.sAbgasHKA&k=Hka_Mw1.Temp.sAbgasMotor&k=Hka_Mw1.Temp.sKapsel&k=Hka_Mw1.Temp.sbFreigabeModul&k=Hka_Mw1.Temp.sbGen&k=Hka_Mw1.Temp.sbMotor&k=Hka_Mw1.Temp.sbRegler&k=Hka_Mw1.Solltemp.sbRuecklauf&k=Hka_Mw1.Solltemp.sbVorlauf&k=Hka_Bd.ulAnzahlStarts&k=Hka_Bd.ulArbeitElektr&k=Hka_Bd.ulArbeitThermHka&k=Hka_Bd.ulArbeitThermKon&k=BD3112.Hka_Bd.ulBetriebssekunden&k=BD3112.Hka_Bd.ulAnzahlStarts&k=BD3112.Hka_Bd.ulArbeitElektr&k=BD3112.Hka_Bd.ulArbeitThermHka&k=BD3112.Hka_Bd.ulArbeitThermKon&k=Hka_Bd.bStoerung&k=Hka_Bd.bWarnung'; const idPath = '0_userdata.0.BHKW.'; const idRLT = idPath + 'RL-Temperatur'; const idBetrieb = idPath + 'Betriebsstunden'; const idAT = idPath + 'Aussen-Temperatur'; const idATh = idPath + 'Heizkreis-Energie'; const idAEl = idPath + 'Elektroenergie'; const idVLT = idPath + "VL-Temperatur"; const idTF1 = idPath + "Temperatur_Fuehler_1"; const idDZ = idPath + "Motordrehzahl"; const idWN = idPath + "Wartung-notwendig"; const idST = idPath + "Stoerung"; const idWR = idPath + "Wartungsrelais"; const idAKK = idPath + "Interne_Umwaelzpumpe"; const idSNR = idPath + "Seriennummer"; const idTNR = idPath + "Teilenummer"; const idINB = idPath + "Inbetriebnahmedatum"; const idWLZT = idPath + "Letzte_Wartung"; const idWAM = idPath + "LWartung_am"; const idWINT = idPath + "Wartungsinterval"; const idALZ = idPath + "Motorlaufzeit-Start"; const idUPV = idPath + "UP_Vordruck"; const idWLST = idPath + "A_Wirkleistung"; const idWAIN = idPath + "Wartung_in_h"; const idTDA = idPath + "Abgastemp_Dachs"; const idTMO = idPath + "Abgastemp_Motor"; const idTKA = idPath + "Kapseltemperatur"; const idTFR = idPath + "Freigabemodul"; const idTEIN = idPath + "Dachs-Eintrittstemperatur"; const idTKM = idPath + "Kuehlwasser-Motor"; const idTIR = idPath + "Interne_Reglertemperatur"; const idSOR = idPath + "Solltemperatur_Ruecklauf"; const idSOV = idPath + "Solltemperatur_Vorlauf"; const idSTAR = idPath + "Anzahl-Starts"; const idSEL = idPath + "Erzeugte_elektrische_Arbeit"; const idSWEN = idPath + "Erzeugte_thermische_Arbeit"; const idSWEK = idPath + "Erzeugte_thermische_Arbeit_Kondenser"; const idSEL31 = idPath + "Erzeugte_elektrische_Arbeit_31_12"; const idSWEN31 = idPath + "Erzeugte_thermische_Arbeit_31_12"; const idSWEK31 = idPath + "Erzeugte_thermische_Arbeit_Kondenser_31_12"; const idSTAR31 = idPath + "Anzahl-Starts_31_12"; const idBetrieb31 = idPath + 'Betriebsstunden_31_12'; const idSTNR = idPath + 'Aktuelle_Stoerung_Nr'; const idWARN = idPath + 'Aktueller_Warncode'; const altzeit = idPath + 'Betriebsstunden-alt' function getBHKW() { httpGet(url, { timeout: 2000, responseType: 'text' }, async (err, response) => { if (err) { console.error(err); } else { const arr = response.data; for (let i = 0; i < arr.length; i++) { let sensor = arr[i].split('='); if (sensor[0].indexOf('Temp.sbRuecklauf') != -1) setState(idRLT, parseFloat(sensor[1]), true); if (sensor[0].indexOf('ulBetriebssekunden') != -1) setState(altzeit,parseFloat(sensor[1]), true ); // Stunden mit 2 Nachkommastellen if (getState(idBetrieb).val<getState(altzeit).val) setState(idBetrieb, getState(altzeit).val, true); //nur höhere Werte loggen if (sensor[0].indexOf('sbAussen') != -1) setState(idAT, parseFloat(sensor[1]), true); if (sensor[0].indexOf('ulArbeitThermHka') != -1) setState(idATh, parseFloat(sensor[1]), true); if (sensor[0].indexOf('ulArbeitElektr') != -1) setState(idAEl, parseFloat(sensor[1]), true); if (sensor[0].indexOf('Temp.sbVorlauf') != -1) setState(idVLT, parseFloat(sensor[1]), true); if (sensor[0].indexOf('sbFuehler1') != -1) setState(idTF1, parseFloat(sensor[1]), true); if (sensor[0].indexOf('usDrehzahl') != -1) setState(idDZ, parseFloat(sensor[1]), true); if (sensor[0].indexOf('uchSeriennummer') != -1) setState(idSNR, parseFloat(sensor[1]), true); if (sensor[0].indexOf('uchTeilenummer') != -1) setState(idTNR, parseFloat(sensor[1]), true); if (sensor[0].indexOf('ulInbetriebnahmedatum') != -1) setState(idINB, parseFloat(sensor[1]), true); if (sensor[0].indexOf('ulBetriebssekundenBei') != -1) setState(idWLZT, parseFloat(sensor[1]), true); if (sensor[0].indexOf('ulAnzahlStarts') != -1) setState(idSTAR, parseFloat(sensor[1]), true); if (sensor[0].indexOf('ulZeitstempel') != -1) setState(idWAM, Math.round(parseFloat(sensor[1])), true); if (sensor[0].indexOf('usIntervall') != -1) setState(idWINT, parseFloat(sensor[1]), true); if (sensor[0].indexOf('ulMotorlaufsekunden') != -1) setState(idALZ, parseFloat(sensor[1]), true); if (sensor[0].indexOf('sWirkleistung') != -1) setState(idWLST, parseFloat(sensor[1]), true); if (sensor[0].indexOf('sAbgasHKA') != -1) setState(idTDA, parseFloat(sensor[1]), true); if (sensor[0].indexOf('sAbgasMotor') != -1) setState(idTMO, parseFloat(sensor[1]), true); if (sensor[0].indexOf('sKapsel') != -1) setState(idTKA, parseFloat(sensor[1]), true); if (sensor[0].indexOf('sbFreigabeModul') != -1) setState(idTFR, parseFloat(sensor[1]), true); if (sensor[0].indexOf('sbGen') != -1) setState(idTEIN, parseFloat(sensor[1]), true); if (sensor[0].indexOf('sbMotor') != -1) setState(idTKM, parseFloat(sensor[1]), true); if (sensor[0].indexOf('sbRegler') != -1) setState(idTIR, parseFloat(sensor[1]), true); if (sensor[0].indexOf('Solltemp.sbRuecklauf') != -1) setState(idSOR, parseFloat(sensor[1]), true); if (sensor[0].indexOf('Solltemp.sbVorlauf') != -1) setState(idSOV, parseFloat(sensor[1]), true); if (sensor[0].indexOf('Hka_Bd.ulArbeitElektr') != -1) setState(idSEL, parseFloat(sensor[1]), true); if (sensor[0].indexOf('Hka_Bd.ulArbeitThermHka') != -1) setState(idSWEN, parseFloat(sensor[1]), true); if (sensor[0].indexOf('Hka_Bd.ulArbeitThermKon') != -1) setState(idSWEK, parseFloat(sensor[1]), true); if (sensor[0].indexOf('BD3112.Hka_Bd.ulArbeitElektr') != -1) setState(idSEL31, parseFloat(sensor[1]), true); if (sensor[0].indexOf('BD3112.Hka_Bd.ulArbeitThermHka') != -1) setState(idSWEN31, parseFloat(sensor[1]), true); if (sensor[0].indexOf('BD3112.Hka_Bd.ulArbeitThermKon') != -1) setState(idSWEK31, parseFloat(sensor[1]), true); if (sensor[0].indexOf('BD3112.Hka_Bd.ulAnzahlStarts') != -1) setState(idSTAR31, parseFloat(sensor[1]), true); if (sensor[0].indexOf('BD3112.Hka_Bd.ulBetriebssekunden') != -1) setState(idBetrieb31, parseFloat(sensor[1]), true); if (sensor[0].indexOf('Hka_Bd.bStoerung') != -1) setState(idSTNR, parseFloat(sensor[1])+100, true); if (sensor[0].indexOf('Hka_Bd.bWarnung') != -1) setState(idWARN, parseFloat(sensor[1])+600, true); if (sensor[0].indexOf('fStehtAn') != -1) setState(idWN, toBoolean(sensor[1]), true); if (sensor[0].indexOf('fUPKuehlung') != -1) setState(idAKK, toBoolean(sensor[1]), true); if (sensor[0].indexOf('fStoerung') != -1) setState(idST, toBoolean(sensor[1]), true); if (sensor[0].indexOf('fWartung') != -1) setState(idWR, toBoolean(sensor[1]), true); if (sensor[0].indexOf('fUPVordruck') != -1) setState(idUPV, toBoolean(sensor[1]), true); } } }); } getBHKW(); // Script start schedule('* * * * *', getBHKW); // jede Minute
-
@haus-automatisierung Danke!
Wenn ich das richtig sehe hast Du nur ein "let" durch ein "const" ersetzt?
Eine Fehlermeldung kommt nicht.Aber leider werden auch hier die Objekte nicht geschrieben.
-
@xwing sagte in Plötzlich ReferenceError: request is not defined:
Die Dokumentation und Verwendung von Axios ist wohl nur was für Hardcore Entwickler.
richtig.
Deswegen ja nur suf httpGet und nicht auf axios umstellen.Verständnisfrage:
was hat dich glauben gemacht axios verwenden zu müssen? -
@xwing sagte in Plötzlich ReferenceError: request is not defined:
Wenn ich das richtig sehe hast Du nur ein "let" durch ein "const" ersetzt?
Ne, das würde keinen Unterschied machen und ist nur Kosmetik. Du hast mit
response
gearbeitet und nicht mitresponse.data
-
@haus-automatisierung hatte ich, wie gesagt auch schon probiert. Bei beiden Wegen kommt zwar keine Fehlermeldung, aber es wird auch nichts in die Objekte geschrieben.
-
@xwing Ich sag ja ich verstehe die Schleife auf dem Text nicht. Kenne die Antwort vom Server ja auch nicht wie das aufgebaut ist. Damit nicht möglich zu helfen.
-
@haus-automatisierung said in Plötzlich ReferenceError: request is not defined:
Kenne die Antwort vom Server ja auch nicht wie das aufgebaut ist.
Das sollte die Webseite sein, die ich oben als Screenshot gepostet hatte.
Ich würde das gerne lösen und vor allem verstehen. Gibt es keine Möglichkeit sich die Inhalte einer Variablen beim debugen anzeigen zu lassen? -
@xwing sagte in Plötzlich ReferenceError: request is not defined:
Das sollte die Webseite sein, die ich oben als Screenshot gepostet hatte.
nein, der Quelltext dazu.
Ausserdem@xwing sagte in Plötzlich ReferenceError: request is not defined:
Gibt es keine Möglichkeit sich die Inhalte einer Variablen beim debugen anzeigen zu lassen?
genau darum geht es ja!
niemand weiß was da jetzt zurück kommt.e7n debug log von
response.data
als Inhalt wäre sinnvoll -
@homoran ich habe jetzt mal debug und protokollierung eingeschaltet.
Gibt es keine Möglichkeit sich den Inhalt der Variablen anzeigen zu lassen?
-
@homoran said in Plötzlich ReferenceError: request is not defined:
e7n debug log von response.data als Inhalt wäre sinnvoll
Wie ist das zu bewerkstelligen?
Ich versuche das schon in Blockly nachzubauen, aber da komme ich auch nicht weiter. -
setze mal das log dort ein, dann sollte etwas im log stehen.
function getBHKW() { httpGet(url, { timeout: 2000, responseType: 'text' }, async (err, response) => { if (err) { console.error(err); } else { log(`Response.statusCode: ${response.statusCode}`); log(`Response.data: ${response.data}`); const arr = response.data;
-
@tt-tom said in Plötzlich ReferenceError: request is not defined:
else {
Danke für den Tip!
Leider sieht die Ausgabe immer noch so aus wie im Screenshot 2 Posts vorher. Kann es sein, daß das Script gar nicht an den Punkt kommt?Ich habe jetzt mal ein Testscript erstellt, daß nur den besprochenen Punkt abfragt:
httpGet('http://glt:ABCD@192.168.0.76:8080/getKey?k=Hka_Mw1.Temp.sbAussen&k=Hka_Bd.ulArbeitThermHka&k=Hka_Bd.ulArbeitElektr&k=Hka_Bd.ulBetriebssekunden&k=Hka_Mw1.Temp.sbRuecklauf&k=Hka_Mw1.Temp.sbVorlauf&k=Wartung_Cache.fStehtAn&k=Hka_Mw1.Temp.sbFuehler1&k=Hka_Mw1.usDrehzahl&k=Hka_Mw1.Aktor.fUPKuehlung&k=Hka_Bd_Stat.uchSeriennummer&k=Hka_Bd_Stat.uchTeilenummer&k=Hka_Bd_Stat.ulInbetriebnahmedatum&k=Wartung_Cache.ulBetriebssekundenBei&k=Wartung_Cache.ulZeitstempel&k=Wartung_Cache.usIntervall&k=Hka_Mw1.ulMotorlaufsekunden&k=Hka_Mw1.Aktor.fStoerung&k=Hka_Mw1.Aktor.fWartung&k=Hka_Mw1.Aktor.fUPVordruck&k=Hka_Mw1.sWirkleistung&k=Hka_Mw1.Temp.sAbgasHKA&k=Hka_Mw1.Temp.sAbgasMotor&k=Hka_Mw1.Temp.sKapsel&k=Hka_Mw1.Temp.sbFreigabeModul&k=Hka_Mw1.Temp.sbGen&k=Hka_Mw1.Temp.sbMotor&k=Hka_Mw1.Temp.sbRegler&k=Hka_Mw1.Solltemp.sbRuecklauf&k=Hka_Mw1.Solltemp.sbVorlauf&k=Hka_Bd.ulAnzahlStarts&k=Hka_Bd.ulArbeitElektr&k=Hka_Bd.ulArbeitThermHka&k=Hka_Bd.ulArbeitThermKon&k=BD3112.Hka_Bd.ulBetriebssekunden&k=BD3112.Hka_Bd.ulAnzahlStarts&k=BD3112.Hka_Bd.ulArbeitElektr&k=BD3112.Hka_Bd.ulArbeitThermHka&k=BD3112.Hka_Bd.ulArbeitThermKon&k=Hka_Bd.bStoerung&k=Hka_Bd.bWarnung', { timeout: 2000, responseType: 'text' }, async (err, response) => { if (err) { console.error(err); } else { log(`Response.statusCode: ${response.statusCode}`); log(`Response.data: ${response.data}`); }});
Die Ausgabe sieht so aus:
Fehlen da Zeilensprünge?
-
Kannst du das bitten mal in codetags packen, sonst kann ich dir nicht weiterhelfen.
Keine Screenshots vom log machen, immer kopieren und hier posten.
-
@tt-tom
Meinst Du so?avascript.0 08:39:18.839 info script.js.common.Senertec.Test: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions javascript.0 08:39:19.175 info script.js.common.Senertec.Test: Response.statusCode: 200 javascript.0 08:39:19.175 info script.js.common.Senertec.Test: Response.data: Hka_Bd.bWarnung=0 Hka_Bd.bStoerung=0 BD3112.Hka_Bd.ulArbeitThermKon=240600.516 BD3112.Hka_Bd.ulArbeitThermHka=1464918.500 BD3112.Hka_Bd.ulArbeitElektr=638439.188 BD3112.Hka_Bd.ulAnzahlStarts=65893 BD3112.Hka_Bd.ulBetriebssekunden=115983.219 Hka_Bd.ulArbeitThermKon=243102.344 Hka_Bd.ulArbeitThermHka=1486528.625 Hka_Bd.ulArbeitElektr=647838.438 Hka_Bd.ulAnzahlStarts=66375 Hka_Mw1.Solltemp.sbVorlauf=63 Hka_Mw1.Solltemp.sbRuecklauf=63 Hka_Mw1.Temp.sbRegler=29 Hka_Mw1.Temp.sbMotor=60 Hka_Mw1.Temp.sbGen=60 Hka_Mw1.Temp.sbFreigabeModul=127 Hka_Mw1.Temp.sKapsel=50.500 Hka_Mw1.Temp.sAbgasMotor=62.000 Hka_Mw1.Temp.sAbgasHKA=53.200 Hka_Mw1.sWirkleistung=0.000 Hka_Mw1.Aktor.fUPVordruck=false Hka_Mw1.Aktor.fWartung=false Hka_Mw1.Aktor.fStoerung=false Hka_Mw1.ulMotorlaufsekunden=2.884 Wartung_Cache.usIntervall=3500 Wartung_Cache.ulZeitstempel=756298868 Wartung_Cache.ulBetriebssekundenBei=115776.305 Hka_Bd_Stat.ulInbetriebnahmedatum=504147600 Hka_Bd_Stat.uchTeilenummer=4700046xxx Hka_Bd_Stat.uchSeriennummer=2209962114 Hka_Mw1.Aktor.fUPKuehlung=false Hka_Mw1.usDrehzahl=0 Hka_Mw1.Temp.sbFuehler1=74 Wartung_Cache.fStehtAn=false Hka_Mw1.Temp.sbVorlauf=76 Hka_Mw1.Temp.sbRuecklauf=44 Hka_Bd.ulBetriebssekunden=117681.539 Hka_Bd.ulArbeitElektr=647838.438 Hka_Bd.ulArbeitThermHka=1486528.625 Hka_Mw1.Temp.sbAussen=15