NEWS
Ext Website steuern (Enpal)
-
Hallo zusammen,
ich möchte gerne über eine Website meine Wallbox steuern. Es ist eine interne Seite ohne Login von Enpal. Anbei ein Screenshot.
Ich habe es mir über die Entwicklertools angeschaut aber komme da nicht weiter. Die Buttons (Set Eco, Set Solar... etc) kann ich leider nicht anklicken und Hyperlink kopieren - so wie ich es gehofft habt :).Hat jemand eine Idee?

-
Hi,
mit Hilfe der KI (Google) habe ich es hinbekommen. Anbei alle Informationen (auch von der KI) zusammengefasst.
Ich habe es jetzt in 3x Scripten - geht vielleicht auch noch in ein Script - aber ich bin froh das es erstmal funktioniert und baue mir jetzt erstmal eine View.Anleitung: Website-Button über ioBroker klicken (Puppeteer)
Diese Anleitung beschreibt, wie ein Button auf einer externen Webseite (z. B. Wallbox-Steuerung) automatisiert über ioBroker geklickt wird.- Systemvorbereitung (Linux/Konsole)
Damit der Browser (Chromium/Puppeteer) unter Linux (Debian/Ubuntu) korrekt startet, müssen notwendige Grafik-Bibliotheken installiert sein. Führe folgende Befehle per SSH aus:
bash sudo apt-get update sudo apt-get install -y libnss3 libnspr4 libatk1.0-0t64 libatk-bridge2.0-0t64 libcups2t64 \ libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxrandr2 libgbm1 libasound2t64 \ libpango-1.0-0 libcairo2 libxfixes3 libx11-6 libx11-xcb1 libxcb1 libxcursor1 libxi6 libxtst6Verwende Code mit Vorsicht.
2. ioBroker Konfiguration- Gehe zu Instanzen -> javascript.0 -> Einstellungen.
- Trage unter Zusätzliche NPM-Module das Wort puppeteer ein.
- Speichere die Einstellungen (der Adapter startet neu).
- Das Steuerungs-Skript
Erstelle ein neues JavaScript im ioBroker und füge folgenden Code ein. Passe die URL und den Selektor ggf. an. Hier mein Beispiel für den Button SET SOLAR
const puppeteer = require('puppeteer'); async function wallboxKlick() { console.log('Starte Browser für Wallbox-Steuerung...'); const browser = await puppeteer.launch({ headless: true, args: ['--no-sandbox', '--disable-setuid-sandbox'] }); try { const page = await browser.newPage(); // Timeout erhöhen, falls die Wallbox-Seite langsam lädt await page.goto('http://192.168.188.110/wallbox', { waitUntil: 'networkidle2', timeout: 30000 }); // Dein kopierter Selektor const selector = 'body > div.page > main > div:nth-child(3) > div.mud-card-actions > button:nth-child(3) > span'; // Warten, bis der Button im DOM erscheint await page.waitForSelector(selector, { visible: true, timeout: 10000 }); // Klick ausführen await page.click(selector); console.log('Wallbox-Button Solar erfolgreich geklickt!'); } catch (e) { console.error('Fehler beim Klicken des Wallbox-Buttons: ' + e.message); } finally { await browser.close(); console.log('Browser geschlossen.'); } } // Beispiel: Trigger über einen Datenpunkt (musst du ggf. anlegen) // Ersetze '0_userdata.0.wallbox_laden_start' durch deinen Datenpunkt on({id: '0_userdata.0.Wallbox.SET_SOLAR', val: true, ack: false}, (obj) => { wallboxKlick(); // Optional: Datenpunkt wieder auf false setzen setState(obj.id, false, true); });Verwende Code mit Vorsicht.
4. Fehlersuche
Sollte der Browser nicht starten, prüfe mit folgendem Befehl in der Konsole, welche Bibliothek noch fehlt:
ldd /home/iobroker/.cache/puppeteer/chrome/linux-XXXX/chrome-linux64/chrome | grep not
- Systemvorbereitung (Linux/Konsole)
-
Hi,
mit Hilfe der KI (Google) habe ich es hinbekommen. Anbei alle Informationen (auch von der KI) zusammengefasst.
Ich habe es jetzt in 3x Scripten - geht vielleicht auch noch in ein Script - aber ich bin froh das es erstmal funktioniert und baue mir jetzt erstmal eine View.Anleitung: Website-Button über ioBroker klicken (Puppeteer)
Diese Anleitung beschreibt, wie ein Button auf einer externen Webseite (z. B. Wallbox-Steuerung) automatisiert über ioBroker geklickt wird.- Systemvorbereitung (Linux/Konsole)
Damit der Browser (Chromium/Puppeteer) unter Linux (Debian/Ubuntu) korrekt startet, müssen notwendige Grafik-Bibliotheken installiert sein. Führe folgende Befehle per SSH aus:
bash sudo apt-get update sudo apt-get install -y libnss3 libnspr4 libatk1.0-0t64 libatk-bridge2.0-0t64 libcups2t64 \ libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxrandr2 libgbm1 libasound2t64 \ libpango-1.0-0 libcairo2 libxfixes3 libx11-6 libx11-xcb1 libxcb1 libxcursor1 libxi6 libxtst6Verwende Code mit Vorsicht.
2. ioBroker Konfiguration- Gehe zu Instanzen -> javascript.0 -> Einstellungen.
- Trage unter Zusätzliche NPM-Module das Wort puppeteer ein.
- Speichere die Einstellungen (der Adapter startet neu).
- Das Steuerungs-Skript
Erstelle ein neues JavaScript im ioBroker und füge folgenden Code ein. Passe die URL und den Selektor ggf. an. Hier mein Beispiel für den Button SET SOLAR
const puppeteer = require('puppeteer'); async function wallboxKlick() { console.log('Starte Browser für Wallbox-Steuerung...'); const browser = await puppeteer.launch({ headless: true, args: ['--no-sandbox', '--disable-setuid-sandbox'] }); try { const page = await browser.newPage(); // Timeout erhöhen, falls die Wallbox-Seite langsam lädt await page.goto('http://192.168.188.110/wallbox', { waitUntil: 'networkidle2', timeout: 30000 }); // Dein kopierter Selektor const selector = 'body > div.page > main > div:nth-child(3) > div.mud-card-actions > button:nth-child(3) > span'; // Warten, bis der Button im DOM erscheint await page.waitForSelector(selector, { visible: true, timeout: 10000 }); // Klick ausführen await page.click(selector); console.log('Wallbox-Button Solar erfolgreich geklickt!'); } catch (e) { console.error('Fehler beim Klicken des Wallbox-Buttons: ' + e.message); } finally { await browser.close(); console.log('Browser geschlossen.'); } } // Beispiel: Trigger über einen Datenpunkt (musst du ggf. anlegen) // Ersetze '0_userdata.0.wallbox_laden_start' durch deinen Datenpunkt on({id: '0_userdata.0.Wallbox.SET_SOLAR', val: true, ack: false}, (obj) => { wallboxKlick(); // Optional: Datenpunkt wieder auf false setzen setState(obj.id, false, true); });Verwende Code mit Vorsicht.
4. Fehlersuche
Sollte der Browser nicht starten, prüfe mit folgendem Befehl in der Konsole, welche Bibliothek noch fehlt:
ldd /home/iobroker/.cache/puppeteer/chrome/linux-XXXX/chrome-linux64/chrome | grep not
das mag zwar funktionieren, ist aber mit ganz schön overhead verbunden.
im endeffekt lädt der im hintergrund einen browser und sagt dem dann, klick hier, klick da und lese dann das ergebnis von der webseite.besser wäre es die api direkt anzusteuern. dazu muss man aber die seite ein wenig reengineeren
was du machen kannst um erstmal grundlagen zu schalfen
- öffne im browser die seite
- dann öffne die web developer tools im browser mit F12
- dann gehen auf den Network tab. falls in der iste schon was drin steht, leere diese. in chrome sieht es dann so aus

- dann drücke einen knopf
- es müssten dann 1 bis mehrere Zeilen erscheinen. Meist ist es die erste aber ggfs muss man mehrere Zeilen durchschauen. Jede Zeile entspricht einen http-request. Also Daten die an den Webserver (also dein Gerät) gesendet werden und die dazugehörige Antwort (wenn was gesendet wird
- du schaust dann der reihe nach die zeilen an, an welchen link das gesendet wurde und ob das mit der funktion des knopfes irgendwie übereinstimmt. zusätzlich schaust du dir dann noch den untertab response an, ob da was drin steht
-wenn du die richtige zeile gefunden hast, dann rechtsklick auf diese zeile und den requestbefehl aus dem kontextmenü "Copy -> Copy as fetch (node.js)" kopieren.
Dann kann man weiterschauen.
- Systemvorbereitung (Linux/Konsole)
-
Hi OliverIO,
vielen Dank für deine Antwort!
Leider passiert in den DEV-Tools unter Network garnichts, wenn ich auf den Button klicke.
Das war meine (und sogar von der KI) erste Idee.Deshalb den Umweg. Bin natürlich für jede weitere Idee offen :)
-
Hi OliverIO,
vielen Dank für deine Antwort!
Leider passiert in den DEV-Tools unter Network garnichts, wenn ich auf den Button klicke.
Das war meine (und sogar von der KI) erste Idee.Deshalb den Umweg. Bin natürlich für jede weitere Idee offen :)
-
Hi OliverIO,
vielen Dank für deine Antwort!
Leider passiert in den DEV-Tools unter Network garnichts, wenn ich auf den Button klicke.
Das war meine (und sogar von der KI) erste Idee.Deshalb den Umweg. Bin natürlich für jede weitere Idee offen :)
-
Mit dem Thema habe ich mich intensiv beschäftigt, als ich den Enpal Adapter gebaut habe.
Ein Steuern wird von Enpal nicht gedultet, es gibt auch keine API-Doku. Lediglich das Auslesen der Daten ist gestattet.
EDIT:
Enpal ist da sehr streng mit ihrem geschlossenen System. Es kann sogar zur Sperrung der lokalen Ui kommen (Info von deren IT)EDIT:
Aus diesem Grund ist mein Enpal Adapter auch Read-Only, um nicht gegen deren Bestimmungen zu verstoßen. -
Ich habe nochmal mit den DEV-Tools rumgespielt - leider kein Erfolg. Es bleibt leer wenn ich den Button drücke. Mit und ohne Invert - beides ausprobiert.
PS: Ein Reload der Seite bringt viele Daten. Aber das hilft ja nicht bei meinen Problem.
@skvarel
wenn sie das umschalten per WebSite nicht erlauben würden, wäre es bestimmt nicht so sichtbar. Aber ja- man sollte es nicht übertreiben.
Früher konnte man über die Enpal-Box noch viel mehr Sachen einstellen. Aber das ist verschwunden - aber auch besser so. Da konnte man echt viel kaputt machen. Habe selbst mal ausversehen was angeklickt und mein Speicher hat nicht mehr geladen...
Ich werde es jetzt erstmal so weiterlaufen lassen - Vorbereitung für den Winter und die Tibber-Ladung, wenn die Sonne nicht mehr ausreicht
Danke euch und Viele Grüße
Marcus -
Ich habe nochmal mit den DEV-Tools rumgespielt - leider kein Erfolg. Es bleibt leer wenn ich den Button drücke. Mit und ohne Invert - beides ausprobiert.
PS: Ein Reload der Seite bringt viele Daten. Aber das hilft ja nicht bei meinen Problem.
@skvarel
wenn sie das umschalten per WebSite nicht erlauben würden, wäre es bestimmt nicht so sichtbar. Aber ja- man sollte es nicht übertreiben.
Früher konnte man über die Enpal-Box noch viel mehr Sachen einstellen. Aber das ist verschwunden - aber auch besser so. Da konnte man echt viel kaputt machen. Habe selbst mal ausversehen was angeklickt und mein Speicher hat nicht mehr geladen...
Ich werde es jetzt erstmal so weiterlaufen lassen - Vorbereitung für den Winter und die Tibber-Ladung, wenn die Sonne nicht mehr ausreicht
Danke euch und Viele Grüße
MarcusDu hast jetzt das Suchfeld leer und invert angekreutzt. Das könnte schon ausfiltern.
Ganz ohne ein Request wäre seltsam.
Als Nächstes bleibt dann eigentlich nur noch websocket. Die Verbindung wurde dann aber bereits am Anfang aufgebaut.Da wäre dann die Vorgehensweise
- Rekord der Seite mit F5
- Filtern auf socket
- dann in den Request rein klicken und im untertan dass auf messages gehen. Mit jedem Klick auf einen Knopf müssten dann mehr messages erscheinen
Websocket ist allerdings etwas aufwändiger zu programmieren
-
Ich habe nochmal mit den DEV-Tools rumgespielt - leider kein Erfolg. Es bleibt leer wenn ich den Button drücke. Mit und ohne Invert - beides ausprobiert.
PS: Ein Reload der Seite bringt viele Daten. Aber das hilft ja nicht bei meinen Problem.
@skvarel
wenn sie das umschalten per WebSite nicht erlauben würden, wäre es bestimmt nicht so sichtbar. Aber ja- man sollte es nicht übertreiben.
Früher konnte man über die Enpal-Box noch viel mehr Sachen einstellen. Aber das ist verschwunden - aber auch besser so. Da konnte man echt viel kaputt machen. Habe selbst mal ausversehen was angeklickt und mein Speicher hat nicht mehr geladen...
Ich werde es jetzt erstmal so weiterlaufen lassen - Vorbereitung für den Winter und die Tibber-Ladung, wenn die Sonne nicht mehr ausreicht
Danke euch und Viele Grüße
Marcus@ktsalti .. ich habe mich etwas unglücklich ausgedrückt.
Ja, das Schalten über die Ui ist natürlich zulässig und gewollt. Es geht um automatisierte Zugriffe, die nicht gestattet sind. Ob Enpal kontrollieren kann, ob man den Button mit dem Finger oder einem Befehl drückt, bezweifle ich.
Ich schaue mir das aber auch mal an. Die Wallbox per VIS zu starten wäre schon nicht schlecht. Allerdings würde ich das bei mir auch nur als Script laufen lassen und es nicht in den Enpal Adapter übernehmen.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden
