NEWS
Adapter Paketverfolgung DHL, Briefe, Amazon, DPD,GLS,UPS,17T
-
@wolfi913 Hatte ich vergessen sollte in der GitHub version nicht mehr kommen
-
@wolfi913 sagte in Adapter Paketverfolgung DHL, Briefe, Amazon, DPD,GLS,UPS,17T:
Ist bei mir jetzt nicht das große Problem, da ich den Datenpunkt via Skript beim erstmaligen Auftreten in einen gesonderten Datenpunkt wegspeichere und darüber in die Visualisierung hole.
Das ist eine gute Idee. Bisher fehlte mir der Ansatz. Hast du ggfs. auch eine Lösung wenn mehrere Briefe eintrudeln?
Ro75.
-
@ro75
Schaut bei mir so aus, bin aber nicht der Skriptexperte:var id; // Beschreibe diese Funktion … async function existiert_DP(id) { return existsState(id); } on({ id: [].concat(['parcel.0.dhl.briefe.json']), change: 'any' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; await wait(2000); if (await existiert_DP('parcel.0.dhl.briefe.currentAdvice.advices01.image')) { setState('0_userdata.0.Datenpunkte.Widgets.Parcel.img_briefe01' /* img_briefe */, getState('parcel.0.dhl.briefe.currentAdvice.advices01.image').val, true); } else { setState('0_userdata.0.Datenpunkte.Widgets.Parcel.img_briefe01' /* img_briefe */, getState('0_userdata.0.Datenpunkte.Widgets.Parcel.img_no_post').val, true); } });
Habe dann das Skript mit entsprechenden Anpassungen (statt 01) in Zeile 13, 15 und 19 noch für 02, 03 und 04 erstellt um max. 4 Briefe anzeigen zu können.
Vorher natürlich noch die entsprechenden Datenpunkte anlegen.
Ein entsprechendes Bild für den Fall das kein Brief kommt kannst Du mit einem Base64Encoder erstellen und dann das Ergebnis (data:image/png;.....) in den Datenpunkt 0_userdata.0.Datenpunkte.Widgets.Parcel.img_no_post einstellen. Das wird dann angezeigt wenn nichts kommt.Das Skript prüft ob der DP "parcel.0.dhl.briefe.currentAdvice.advices0x.image" existiert und speichert dann falls ja den Wert in "0_userdata.0.Datenpunkte.Widgets.Parcel.img_briefe0x" , ansonsten (als wenn nicht) holt er sich das Bild (keine Post) aus dem DP "0_userdata.0.Datenpunkte.Widgets.Parcel.img_no_post" und wird getriggert wenn die Werte von currentAdvice nach oldAdvices01 geschoben werden.
Edit:
Besser sollte es sein den Trigger (Zeile 9) auf "parcel.0.dhl.briefe.json" zu stellen. Skript entsprechend angepasst. Hatte etwas rumgespielt und vergessen das zurückzustellen. -
@tombox sagte in Adapter Paketverfolgung DHL, Briefe, Amazon, DPD,GLS,UPS,17T:
@wolfi913 Hatte ich vergessen sollte in der GitHub version nicht mehr kommen
Vielen Dank . Hab auf die GitHub-Version umgestellt.
-
@wolfi913 sagte in Adapter Paketverfolgung DHL, Briefe, Amazon, DPD,GLS,UPS,17T:
Schaut bei mir so aus, bin aber nicht der Skriptexperte:
Das schaue ich mir an. Vielen Dank an dich.
-
Deine Idee ist klasse. Ich habe das Skript von dir etwas modifiziert.
const MaxAnzeigeBriefe = 6; const leeresBild = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsSAAALEgHS3X78AAAADUlEQVR4nGP4//8/AwAI/AL+p5qgoAAAAABJRU5ErkJggg=="; for (let i = 1; i <= MaxAnzeigeBriefe; i++) { //DP zur Darstellung anlegen createState('0_userdata.0.Briefe.'+i, leeresBild, {type: 'string', read: true, write: true}); } createState('0_userdata.0.Briefe.vorhanden', 0, {type: 'number', read: true, write: true}); on({id: 'parcel.0.dhl.briefe.json', change: 'any'}, function (obj) { //hier nun die Bilder für VIS speichern setTimeout(function(){ var CountBriefe = 0; //hier die tatsächlich vorhandenen Briefe merken for (let i = 1; i <= MaxAnzeigeBriefe; i++) { if (existsState('parcel.0.dhl.briefe.currentAdvice.advices0'+i+'.image') === false) { setState('0_userdata.0.Briefe.'+i,leeresBild,true); } else { setState('0_userdata.0.Briefe.'+i,getState('parcel.0.dhl.briefe.currentAdvice.advices0'+i+'.image').val,true); CountBriefe++; } } setState('0_userdata.0.Briefe.vorhanden',CountBriefe,true); },5000); });
Das Skript legt die DP selbst an. Über "MaxAnzeigeBriefe" kann die maximale Anzahl an darzustellenden (speichernden) Briefe festgelegt werden. Dann wird das ganze in einer Schleife abgearbeitet.
Falls du was davon verwenden möchtest, musst du nur noch die DP anpassen. Danke für die Inspiration.
Ro75.
-
@ro75
Klasse
Werd das Skript gleich bei mir einbauen.
Ebenfalls vielen Dank. -
@wolfi913 ich habe dem Skript gerade noch etwas hinzugefügt. Die Anzahl der vorhandenen Briefe. Der DP wird automatisch angelegt und entsprechend befüllt.
Ro75.
-
@ro75
Hab's gleich bei mir mit eingebaut. Funktioniert -
@wolfi913 Entschuldigt bitte aber wie wird das script wo eingefügt.?
-
@walter-o
als neues Javascript im Skriptausführung-Adapter bzw. in einer Instanz davon. -
Welches Widget zeigt denn ein solches Base64 codiertes Bild an?
-
@ofbeqnpolkkl6mby5e13 html oder img src wie in Beitrag 1
-
@tombox sagte in Adapter Paketverfolgung DHL, Briefe, Amazon, DPD,GLS,UPS,17T:
@ofbeqnpolkkl6mby5e13 html oder img src wie in Beitrag 1
Bei mir in den Objekten ist der Datenpunkt "parcel.0.dhl.briefe.oldAdvices01.advices01.image" nicht vorhanden.
Nur parcel.0.dhl.briefe.oldAdvices01.advices01.image_url
Das funktioniert natürlich nicht.
Woran kann es liegen? -
@walter-o Mit v0.2.6?
-
@tombox parcel v0.0.27
-
@walter-o Das ist eigenartig auch nach einem adapter Neustart?
-
@tombox Leider nicht, auch nach einer neu installation nicht. Achja der Parcel adapter schmeist ständig
parcel.0 2023-12-21 20:26:15.231 error Error: read ETIMEDOUT raus.!
-
@walter-o Bitte mal die GitHub version testen
-
@tombox Sorry, aber ich finde da nur die 0.27 Version.!