Perfekt,
das ist die Lösung!
Das ist ja viel bequemer wie mein altes Script.
Danke !
Perfekt,
das ist die Lösung!
Das ist ja viel bequemer wie mein altes Script.
Danke !
Bestes Forum!!!
DANKE es geht wieder.
Ich sehe gerade das ich einen neuen Thread aufgemacht habe, eigentlich sollte es in diesen "Daten Seriell von Paradigma Solaranlage lesen"
Von einem Adapter bin ich leider mit meinen Programmierkenntnissen meilenweit entfernt,
Aber das Skript tut seinen Dienst…
Sorry,
irgendwie konnte ich kein neues Thema erstellen und habe mich an ein anderes drangehangen, nach einem Browser Neustart funktioniert es jetzt.
Moin,
Sollte eigentlich funktionieren, die Werte werden ja nur zeilenweise von der Webseite gelesen.
Ob die Zuordnung passt siehst du leicht selber über folgende URL‘s und kannst ggf. das Skript anpassen.
Werte:
http://IP.IP.IP.IP/daqdata.cgi
Beschreibung:
http://IP.IP.IP.IP/daqdesc.cgi
@foxriver76
Von mir auch, funktioniert einwandfrei
Hier der Auszug
**V0.3.0**
script.js.ESP-E-INK.VIS-View-an-eTag-senden: {"result":{"type":"Buffer","data":[255,216,255,224,0,16,74,70,73,70,0,1,1,0,0,1,0,1,0,0,
....... gekürzt
6,125,67,126,114,81,96,215,6,215,200,108,126,159,93,53,210,219,199,230,111,26,150,155,50,223,42,241,147,98,90,182,250,87,37,27,44,182,76,173,234,196,86,67,221,64,146,99,103,143,42,25,108,82,81,71,192,201,41,147,149,22,59,218,146,39,113,195,135,14,17,127,255,217]}}
**V0.4.0**
javascript.0
2024-10-31 18:26:12.966 error at processImmediate (node:internal/timers:483:21)
javascript.0
2024-10-31 18:26:12.966 error at Immediate._onImmediate (file:///opt/iobroker/node_modules/@iobroker/db-states-redis/src/lib/states/statesInRedisClient.ts:381:37)
javascript.0
2024-10-31 18:26:12.966 error at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:10886:45)
javascript.0
2024-10-31 18:26:12.966 error at Object.cb (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:3097:38)
javascript.0
2024-10-31 18:26:12.966 error at Object.<anonymous> (script.js.ESP-E-INK.VIS-View-an-eTag-senden:44:24)
javascript.0
2024-10-31 18:26:12.965 error at Function.from (node:buffer:320:9)
javascript.0
2024-10-31 18:26:12.965 error Error in callback: TypeError: The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object. Received an instance of Object
javascript.0
2024-10-31 18:26:12.962 info script.js.ESP-E-INK.VIS-View-an-eTag-senden: {"result":{"0":255,"1":216,"2":255,"3":224,"4":0,"5":16,"6":74,"7":70,"8":73,"9":70,"10":0,"11":1,"12":1,"13":0,"14":0,"15":1,"16":0,"17":1,"18":0,"19":0,"20":255,"21":226,"
....... gekürzt
"20617":201,"20618":202,"20619":139,"20620":29,"20621":237,"20622":73,"20623":19,"20624":184,"20625":225,"20626":195,"20627":135,"20628":8,"20629":191,"20630":255,"20631":217}}
@foxriver76
Ich bin ja nicht so der Programmierer, ehr der C&P Typ, wie bekomme ich denn da dran?
@foxriver76
Schau mal bitte hier, seit dem Update auf die 0.4.0 habe ich Probleme und bin zurück auf die 0.3.0.
https://forum.iobroker.net/topic/66380/e-ink-display-openepaperlink-displayanzeige-mit-batterie/789
Hallo,
seit dem Update von Pupeteer auf 0.4.0 bekomme ich folgende Fehlermeldung.
javascript.0
2024-10-28 18:54:02.284 error at processImmediate (node:internal/timers:483:21)
javascript.0
2024-10-28 18:54:02.284 error at Immediate._onImmediate (file:///opt/iobroker/node_modules/@iobroker/db-states-redis/src/lib/states/statesInRedisClient.ts:381:37)
javascript.0
2024-10-28 18:54:02.284 error at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:10886:45)
javascript.0
2024-10-28 18:54:02.284 error at Object.cb (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:3097:38)
javascript.0
2024-10-28 18:54:02.284 error at Object.<anonymous> (script.js.ESP-E-INK.VIS-View-an-eTag-senden:43:24)
javascript.0
2024-10-28 18:54:02.284 error at Function.from (node:buffer:320:9)
javascript.0
2024-10-28 18:54:02.283 error Error in callback: TypeError: The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object. Received an instance of Object
Hier mein Script
sendTo('puppeteer.0', 'screenshot', {
url: urlOfVISView,
path: imageSaveToFilenameWithPath,
width: viewWidth,
height: viewHeight,
quality: jpgQuality,
waitOption: {
waitForSelector: waitForSelector,
waitForTimeout: 30000
},
fullPage: false,
clip: {
x: cutoutX,
y: cutoutY,
width: cutoutWidth,
height: cutoutHeight
}
}, obj => {
if (obj.error) {
console.warn("Fehler beim Aufruf der View: " + urlOfVISView + " => " + obj.error.message);
} else {
const http = require('http');
const https = require('https');
const { URL } = require('url');
const boundary = '--------------------------' + Date.now().toString(16);
const CRLF = '\r\n';
// Payload-Erstellung
const payload = Buffer.concat([
Buffer.from(`--${boundary}${CRLF}Content-Disposition: form-data; name="dither"${CRLF}${CRLF}${dither}${CRLF}`),
Buffer.from(`--${boundary}${CRLF}Content-Disposition: form-data; name="mac"${CRLF}${CRLF}${ePaperMAC}${CRLF}`),
Buffer.from(`--${boundary}${CRLF}Content-Disposition: form-data; name="image"; filename="screenshot.jpg"${CRLF}Content-Type: image/jpeg${CRLF}${CRLF}`),
Buffer.from(obj.result, 'binary'),
Buffer.from(`${CRLF}--${boundary}--${CRLF}`)
]);
// URL Parsing
const url = new URL(imageUploadURL);
const options = {
hostname: url.hostname,
port: url.port || (url.protocol === 'https:' ? 443 : 80),
path: url.pathname + (url.search || ''),
method: 'POST',
headers: {
'Content-Type': 'multipart/form-data; boundary=' + boundary,
'Content-Length': payload.length
}
};
// Protokollwahl
const protocol = url.protocol === 'https:' ? https : http;
// HTTP Request
const req = protocol.request(options, function(res) {
console.log('ImageUploadStatusCode:', res.statusCode);
res.on('data', function(chunk) {
console.log('Response:', chunk.toString());
});
});
req.on('error', function(e) {
console.error('Fehler beim Hochladen:', e.message);
});
req.write(payload);
req.end();
}
});
@beowolf sagte in E-INK Display OpenEPaperLink - Displayanzeige mit Batterie:
So, ich habe jetzt das Skript mal ein wenig umgebaut.
sendTo('puppeteer.0', 'screenshot', { url: urlOfVISView, path: imageSaveToFilenameWithPath, width: viewWidth, height: viewHeight, quality: jpgQuality, waitOption: { waitForSelector: waitForSelector, waitForTimeout: 20000 }, fullPage: false, clip: { x: cutoutX, y: cutoutY, width: cutoutWidth, height: cutoutHeight } }, obj => { if (obj.error) { console.warn("Fehler beim Aufruf der View: " + urlOfVISView + " => " + obj.error.message); } else { const http = require('http'); const https = require('https'); const { URL } = require('url'); const boundary = '--------------------------' + Date.now().toString(16); const CRLF = '\r\n'; // Payload-Erstellung const payload = Buffer.concat([ Buffer.from(`--${boundary}${CRLF}Content-Disposition: form-data; name="dither"${CRLF}${CRLF}0${CRLF}`), Buffer.from(`--${boundary}${CRLF}Content-Disposition: form-data; name="mac"${CRLF}${CRLF}${ePaperMAC}${CRLF}`), Buffer.from(`--${boundary}${CRLF}Content-Disposition: form-data; name="image"; filename="screenshot.jpg"${CRLF}Content-Type: image/jpeg${CRLF}${CRLF}`), Buffer.from(obj.result, 'binary'), Buffer.from(`${CRLF}--${boundary}--${CRLF}`) ]); // URL Parsing const url = new URL(imageUploadURL); const options = { hostname: url.hostname, port: url.port || (url.protocol === 'https:' ? 443 : 80), path: url.pathname + (url.search || ''), method: 'POST', headers: { 'Content-Type': 'multipart/form-data; boundary=' + boundary, 'Content-Length': payload.length } }; // Protokollwahl const protocol = url.protocol === 'https:' ? https : http; // HTTP Request const req = protocol.request(options, function(res) { console.log('ImageUploadStatusCode:', res.statusCode); res.on('data', function(chunk) { console.log('Response:', chunk.toString()); }); }); req.on('error', function(e) { console.error('Fehler beim Hochladen:', e.message); }); req.write(payload); req.end(); } });
Na ja, ich bin jetzt mal ehrlich. Ich habe ChatGPT solange damit gernervt bis ich eine Version hatte die jetzt funktioniert.
Ich habe keine Ahnung was da wie gemacht wird, aber es läuft. Die TAG werden sehr schnell aktualisiert und alles ohne Fehlermeldungen.
Grüße
Manfred
Haben wir hier jemanden der noch die Funktion groß/klein Skalieren für die bessere Bildqualität einbauen kann?
@haus-automatisierung sagte in Request ablösen durch httpget:
schedule('*/30 * * * *', () => { httpGet('https://api.forecast.solar/estimate/51,11,23/9,12,54/30/28/12.73', { timeout: 2000 }, (err, response) => { if (err) { console.error(err); } else if (response.statusCode == 200) { const res = JSON.parse(response.data).result.watts; for (const [key, val] of Object.entries(res)) { sendTo('influxdb.0', 'storeState', { id: 'javascript.0.e3dc.PV_Forecast', state: { ts: new Date(key).getTime(), val, ack: true, from: 'javascript.0', q: 0 } }); } } }); });
Funktioniert, Danke!
v8.3.1, glaube gestern erst ein update gemacht, daher bin ich aktiv geworden
Perfekt,
das ist die Lösung!
Das ist ja viel bequemer wie mein altes Script.
Danke !
Sorry,
irgendwie konnte ich kein neues Thema erstellen und habe mich an ein anderes drangehangen, nach einem Browser Neustart funktioniert es jetzt.