NEWS
Mymüll Visualizierung in VIS
-
Hallo. Ich bin recht neu hier und fummel mich da gerade so durch .Einiges konnte ich durch das forum schon lernen und anwenden.Ich möchte auf der VIS gerne die Daten von MYMÜLL darstellen bzw auswerten . Diese konnte ich nach langem suchen nur als JSON daten finden . Gibt es eine anleitung wie ich diese als erinnerung in einem Kalender oder als Icon der entsprechenden Mülltonne mit Datum visualizieren kann, günstigstenfalls bevor die Müllabfuhr kommt
-
@karsten-schwab schau Dir mal den ical Adapter an.
-
@djmarc75 sagte in Mymüll Visualizierung in VIS:
@karsten-schwab schau Dir mal den ical Adapter an.
Und dazu den Adapter trashschedule
-
@sigi234 sagte in Mymüll Visualizierung in VIS:
Und dazu den Adapter trashschedule
Korrekt, geht zwar auch ohne aber macht Sinn für Neueinsteiger
-
@djmarc75
Danke für deine Zeit .
Ich habe beide Instanzen in Iobroker . Ich habe aber keine ahnung wie ich die Termine dieser Json Datei auslesen kann.
Leider stellt meine Stadt nur eine PDF zur verfügung.
Ich könnte diese wohl zu fuß in einen Kalender übertragen aber das ist ja nicht der Sinn von Smart Home -
@karsten-schwab sagte in Mymüll Visualizierung in VIS:
wie ich die Termine dieser Json Datei auslesen kann
GuMo,
mit folgendem Blockly:Du musst Dir einen eigenen Datenpunkt vom Typ JSON anlegen.
Das Skript fragt täglich um 0:30 Uhr die URL ab und beschreibt den Datenpunkt.
Zum testen obs funktioniert kannst Du ja mal den ZeitplanBlock weglassen und nur den Request ausführen.Ist Dein DP nun beschrieben dann könntest Du Dir diesen als Tabelle in VIS anzeigen lassen.
Dazu verwendest Du am Besten das Widget
mit folgenden Einstellungen:
Sieht bei mir dann so aus:
-
es gibt mittlerweile einen adapter, der kann google kalender einträge anlegen https://forum.iobroker.net/topic/62479/test-neuer-adapter-webcal?_=1692769839213
d.h. du könntest mit einem script das json in google bringen und dann über ical und trashschedule weitermachen
so was ähnliches versuchen wir gerade in diesem thread zu machen - nur das wir das json erst erzeugen müssen:
https://forum.iobroker.net/topic/67393/kalender-von-website-auslesen -
@djmarc75
Danke für die Zeit.
Leider muss ich feststellen das ich zuviel nicht weiß...
Ich mach mich jetzt nochmal etwas schlauer über Grundlagen Iobroker .
Dann kann ich deinen Tipp ausprobieren und melde mich .
Gruß Karsten -
@liv-in-sky Danke für die Zeit.
Leider muss ich feststellen das ich zuviel nicht weiß...
Ich mach mich jetzt nochmal etwas schlauer über Grundlagen Iobroker .
Dann kann ich deinen Tipp ausprobieren und melde mich .
Gruß Karsten -
@djmarc75
Hi
Ich habe zu spät gesehen das man auf "Spoiler" klicken kann um den Code auszulesen...
Jedenfalls hat meine suche volgenden Code hervorgebracht.const city_id =21804; const area_id =282; const logging = false; const name = 'Müllabfuhr [Stadt]'; const numberOfEntries = 9; const request = require('request'); const instanz = '0_userdata.' + instance + '.muell'; if (logging) log('starting muell.' + instanz); extendObject(instanz, { type: "device", common: { name: name } }, function (err) { if (err) { log('could not create device: ', 'warn'); return; } } ); let baseData = {}; // query names first request({ url: 'https://mymuell.jumomind.com/mmapp/api.php?r=trash&city_id=' + city_id + '&area_id=' + area_id, method: 'GET', headers: { 'Accept': 'application/json' } }, function(error, response, body) { if (!error && response.statusCode == 200) { var data = JSON.parse(body); // info ist ein Objekt data.forEach((v, i) => { baseData[v._name] = v; }) updateMuell(); } } ); schedule('{"time":{"exactTime":true,"start":"12:17"},"period":{"days":1}}', updateMuell); function updateMuell() { var options = {url: 'https://mymuell.jumomind.com/webservice.php?idx=termins&city_id=' + city_id + '&area_id=' + area_id + '&ws=3', method: 'GET', headers: { 'Accept': 'application/json' }}; request(options, function(error, response, body) { if (!error && response.statusCode == 200) { var info = JSON.parse(body); // info ist ein Objekt if (info[0].Ack === 'Success') { var data = info[0]._data; // xy ist eine Eigenschaft des Objektes info let counter = 0; const date = (new Date()) const todayStr = date.getFullYear() + "-" + ('00' + (date.getMonth() + 1 )).slice(-2) + "-" + ('00' + date.getDate()).slice(-2) log(todayStr); data.forEach((v, i) => { if (todayStr < v.cal_date && counter <= numberOfEntries) { const basePath = instanz + '.' + ('000' + counter).slice(-3); log(v.cal_date + ' -> ' + basePath, 'debug'); // States erstellen extendObject(basePath, { type: "channel", common: { name: v.cal_date_normal } }, function (err) { if (err) { log('could not create device: ', 'warn'); return; } } ); createState(basePath + '.date', v.cal_date_normal, { name: 'Datum', desc: 'Datum der Abholung', type: 'string', read: true, write: false }, () => { setState(basePath + '.date', v.cal_date_normal, true); }); createState(basePath + '.desc', baseData[v.cal_garbage_type].title, { name: 'Beschreibung', desc: 'Beschreibung der Abholung', type: 'string', read: true, write: false }, () => { setState(basePath + '.desc', baseData[v.cal_garbage_type].title, true); }); createState(basePath + '.color', { name: 'Farbe', desc: 'Farbe', type: 'string', role: 'level.color', read: true, write: false }, () => { setState(basePath + '.color', baseData[v.cal_garbage_type].color, true); }); counter++; } }); } } }); };
MOD-EDIT: Code in code-tags gesetzt!
Damit habe ich im Objekt Ordner Müll diese Einträge bekommen. (Scheinbar holt das skribt termine des nächsten monats ab)
Nun muss ich diese nur noch visualizieren. Hab aber keine Idee wie das geht ... -
@karsten-schwab sagte in Mymüll Visualizierung in VIS:
Jedenfalls hat meine suche volgenden Code hervorgebracht
?
Ist nicht in Codetags, kann ich daher nicht lesen.
Und warum nutzt Du nicht einfach mein Skript ?
Habs grad nochmal bei mir aktiviert und: funktioniert.In meinem Beitrag hab ich Dir auch ein Bespiel für die Visualisierung gegeben.
edit: ein neues Blocklyskript erstellen und den Inhalt aus meinem Spoiler dort einfügen.
Das ist kein Javaskript! -
@djmarc75
Ich habe versucht dein Scribt nachzubasteln aber leider nicht hinbekommen.
Deshalb die suche im Netz.
Ich habe zu spät gemerkt das ich in dem kästchen (Spoiler) den Code abrufen könnte.
Die Visualizierung bekomm ich auch nicht hin. Ich habe wahrscheinlich alle widges durchsucht aber die von dir gezeigten nicht gefunden.Ich habe einen Magic Mirror.
Diesen habe ich nach einer anleitung aus dem Internet zusammengebaut und zusammen mit einem darauf abgestimmten OS zum laufen gebracht.
Leider ist das OS nicht so das ich mir halt dinge von meinem Smart home (Homematik Milight Instarcam,doorbird Sonos ect ) anzeigen lassen könnte.
Da jetzt nach 4 Jahren renovierung der Flur endlich mal fertig werden soll hab ich das projekt wieder ausgegraben und den Pi 3b gegeneinen 4b mit Camera getauscht und hatte halt die Idee mir dort mit Iobroker die gewünschten Sachen anzeigen zu lassen.
Datum Uhrzeit Kalender Wetter Sprit und Heizölpreise (die Günstigsten in der nähe) Video live stream der Kameras und Unwetterwarnungen vom Deutschen Wetterdienst hab ich schon hinbekommen.
Ich hab es auch geschafft Lampen zu steuern und mir den zustand eines Fensters anzeigen zu lassen. Die lampen sind auch steuerbar was aber nicht nötig wäre.
Aktuelles ,und wohl nicht das letzte Problem, ist halt der Müllkalender .
Ich hätte da gern einfach den Wöchentlichen Hinweiß welche Tonne raus muss. Wir haben Abholtermine Dienstag und Freitag (Freitags nur Papier) Es muss also nur Montags und Donnerstags ein hinweis erscheinen der mich dazu veranlasst die richtigen Tonnen rauszustellen.Bei den Leuchten und Fenstern weiß ich auch noch nicht wie ich das anstelle .
Ziel wäre das ein Button Leuchtet wenn im Haus ein licht an ist und am besten dahinter dann ein Feld wäre in dem nacheinander die entsprechenden Lampen aufgeführt werden.
Das ähnliche mit den Fensterkontakten.
Damit der Bildschirm nicht dauernd an ist soll die Kamera möglichst bewegung erkennen und dann bei erkannter bewegung das Licht vom Bildschirm eine bestimmte zeit anschalten.
Und damit es nicht langweilig wird wäre es total toll wenn der Kalender nur termine anzeigt wenn Ich oder Meine Frau in den Spiegel schaut (Gesichtserkennung)....geht ja nicht unbedingt jeden was an wann wir wo was tun:-)Super wäre auch wenn bei Klingeln an der Doorbird eine ansage über Sonos kommt , das geht bisher aber leider nur über eine instanz von Sonos und nicht auf allen Lautsprechern.
Hohe Ziele , bekomm aber kein blockly gebacken.
Immerhin hab ich mir für diesen Spiegel (nicht nur dafür) das 3D Drucken angeeignet und es geschafft mir Halter und Gehäuse für den Bildschirm zu konstruieren und auch zu drucken.Wird wohl wieder ein etwas längerer weg aber wer nicht wagt der nicht gewinnt.
Soweit mal zur erklärung meines vorhabens, wenn jemand mehr infos über Magic Mirror bzw Halter und Gehause möchte bitte melden.
Zuerst ist jetzt aber noch der Müllkalender an der reihe....
-
@karsten-schwab Bitte konzentriere Dich in Deinem Beitrag auf die Lösung welche im Titel gesucht wird:
Mymüll Visualizierung in VIS
Das Andere was Du da so schreibst ist hier nicht relevant.
Also nochmal:
@karsten-schwab sagte in Mymüll Visualizierung in VIS:
Ich habe versucht dein Scribt nachzubasteln aber leider nicht hinbekommen.
Du brauchst das nicht nachbauen, wäre aber trotzdem sinnvoll damit man auch sieht dass Du prinzipiell lernwillig bist.
Nochmal der Code:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="u5d)cb~FE#u}1YW#39UH">result</variable> </variables> <block type="schedule" id="ujASN%g^?T!Oxan%4K?c" x="163" y="113"> <field name="SCHEDULE">30 0 * * *</field> <statement name="STATEMENT"> <block type="request" id="O{OthkAOezNfIxXTqnu*"> <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation> <field name="WITH_STATEMENT">TRUE</field> <field name="LOG"></field> <value name="URL"> <shadow type="text" id="]9HOyM4/PNyd$)v#T#S^"> <field name="TEXT">https://mymuell.jumomind.com/mmapp/api.php?r=dates&city_id=2316&area_id=17</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id="%Tx$3J/~.UkEkIXlgU-d"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Test.mymuell</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="iw!G}|]{LL_]ET.5f`o|"> <field name="VAR" id="u5d)cb~FE#u}1YW#39UH">result</field> </block> </value> </block> </statement> </block> </statement> </block> </xml>
Blockly erstellen und den Code über
reinkopieren.
Den Datenpunkt musst Du Dir selber anlegen irgendwo unter
0_userdata.0
Zur VIS kommen wir dann bitte erst wenn Du diese Standards umgesetzt hast.
edit: zusätzlich noch bitte folgenden Beitrag lesen und zukünftig umsetzen
https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge
-
@djmarc75
Hallo
Danke für deine Geduld.
Ich habe es geschafft das Blockly zu importieren.
Ich habe auch die URL so geändert das meine Daten vom Wohnort angezeigt werden (sollten)
Ich habe auch einen Ordner bei Objekten angelegt , in welchen die Daten dann reinsollen.Aber bei dem Blockly "Aktualisiere" kann ich den von mir erstellten Ordner nicht anwählen. Er wird garnicht erst angezeigt.
Wenn ich bei meinen Objekten schaue sieht der Ordner aber genauso aus wie von dir gewünscht . -
-
javascript.0 2023-08-30 11:04:08.439 error at processImmediate (node:internal/timers:478:21) javascript.0 2023-08-30 11:04:08.438 error at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.javascript/main.js:1628:17) javascript.0 2023-08-30 11:04:08.437 error at /opt/iobroker/node_modules/iobroker.javascript/main.js:2153:17 javascript.0 2023-08-30 11:04:08.437 error at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:2055:37) javascript.0 2023-08-30 11:04:08.436 error at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1802:21) javascript.0 2023-08-30 11:04:08.436 error at new Script (node:vm:94:7) javascript.0 2023-08-30 11:04:08.436 error SyntaxError: Unexpected token ',' javascript.0 2023-08-30 11:04:08.435 error ^ javascript.0 2023-08-30 11:04:08.435 error setState("Object ID", , true); javascript.0 2023-08-30 11:04:08.434 error script.js.Müll compile failed: at script.js.Müll:12 javascript.0 2023-08-30 11:04:08.428 info Start javascript script.js.Müll javascript.0 2023-08-30 11:04:08.417 info Stop script script.js.Müll
-
@karsten-schwab Zeig mal das Blockly bitte.
@karsten-schwab sagte in Mymüll Visualizierung in VIS:
Ich habe auch einen Ordner bei Objekten angelegt , in welchen die Daten dann reinsollen.
und dann in diesem Ordner natürlich einen Datenpunkt vom Typ JSON anlegen.
@karsten-schwab sagte in Mymüll Visualizierung in VIS:
Aber bei dem Blockly "Aktualisiere" kann ich den von mir erstellten Ordner nicht anwählen.
Dort kann man auch keinen Ordner sondern nur Datenpunkte auswählen.
-
@djmarc75
Hurra ,ich kann jetzt Datenpunkte anlegen (falls ich im Expertenmodus bin )
Das Blockly scheint ohne fehlermeldung zu laufen .Daten habe ich aber keine gefunden.
Ich bin lernwillig aber manchmal auch etwas begriffsstutzig.....
Danke
Ich habe versucht mich an die Forenempfehlung zu halten und Text als Text zu posten, aber oft kommt die meldung "Forbidden something went wrong" dann kann ich in den Reply auch keine Fotos mehr einfügen.
Sorry -
@karsten-schwab ```
code_text
-