Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. EPaper-Server/Displays per CURL ansteuern?

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    EPaper-Server/Displays per CURL ansteuern?

    This topic has been deleted. Only users with topic management privileges can see it.
    • t.omalley
      t.omalley last edited by

      Hallo Leute,

      ich würde gerne unseren vorhandenen ePaper-Server aus iobroker ansteuern, um Statusmeldungen etc. an den Räumen oder sonstwo anzuzeigen.

      Das Produkt ist von Lancom/imagotag (https://www.lancom-systems.de/loesungen … hilderung/) und läuft bereits für Artikel-Beschilderung und Raumbeschriftungen, letztere allerdings statisch bzw. manuell.

      Ich muss nun lediglich per curl einige Angaben auf den Webserver posten, etwa in dieser Form (Beispiel aus unserem David-Server, ich glaube Javascript?):

      "\\w2k12dc\ESD_Server\xml\curl.exe -X POST -d @\\w2k12dc\ESD_Server\xml\file.xml" http://192.168.100.5:8001/service/task --header ""Content-Type:application/xml"""
      

      Das Handbuch sagt folgendes:
      ` > Um die Grafik an den Wireless ePaper Server zu schicken, benötigen Sie ein Kommandozeilenprogramm wie cURL. Als Beispiel geben Sie in cURL über curl -X POST -d @template_task_Wireless_ePaper_Solutions.xml http://ePaperServer:8001/service/task –header

      "Content-Type:application/xml" den Befehl an den Server weiter. Dieser erkennt die XML-Datei und den darin enthaltenen Verweis auf die XSL-Datei mit der Formatierung. `

      Kann ich das (einfach) per Nodered realisieren? Was brauche ich dazu? Mein iobroker läuft auf einer Synology 916+ im virtuellen DSM, vielleicht ist das noch wichtig (wegen curl??)

      Ich freue mich über Rückmeldungen und Ansätze dazu, vielleicht reicht ja auch ein Denkanstoss um das weiterzuentwickeln…

      Liebe Grüße aus Hameln,

      t.omalley

      1 Reply Last reply Reply Quote 0
      • P
        pix last edited by

        Hallo,

        hilft dir das?

        http://forum.iobroker.net/viewtopic.php … 835#p59815

        Gruß

        Pix

        EDIT: Die fertige Lösung würde mich auch interessieren. Die Lancom Dinger sind zwar nicht billig, aber angebunden an ioBroker ergäbe sich ein gutes Argument für ioBroker in der Geschäftswelt.

        1 Reply Last reply Reply Quote 0
        • t.omalley
          t.omalley last edited by

          Hab´s hinbekommen, curl lässt sich ganz einfach über den exec-node ausführen!

          Ich frage hier bei Änderungen die Temperaturen ab und lege die in Flow-Variablen ab, das Display wird immer nur dann (mit den aktuellen Temperaturen) aktualisiert, wenn das kritische Dachfenster geöffnet oder geschlossen wird - das spart Batteriestrom.

          Mit dieser Lösung zeige ich am Ausgang an, dass noch ein Fenster offen ist, weil das schon oft vergessen wurde. Das Display sollte damit 5-6 Jahre durchhalten, dann gibt´s schickere Lösungen.

          Nachdem nun die größte Hürde genommen ist, mache ich mich an Displays mit Raumbelegung/Kalender, anstehende ical-Termine (Mülltermine - Tonnen rausstellen), Auslastungs-/Umsatzzahlen, Diensteinteilungen…Möglichkeiten ohne Ende - und keine Stromversorgung nötig freu

          3152_img_0953.jpg

          Hier mein flow:

          ! ````
          [
          {
          "id": "b859cbc9.b0f1e8",
          "type": "function",
          "z": "6355756.629658c",
          "name": "27_4 xml bauen",
          "func": "var tempkueche = flow.get("tempkueche");\nvar temptoilet = flow.get("temptoilet");\nvar tempchef = flow.get("tempchef");\nvar templager = flow.get("templager");\nvar fenster = flow.get("fenster");\n\nvar newMsg = {payload: "<taskorder title="Refresh B302D29E"><templatetask labelid="B302D29E" externalid="40" template="2h_foyer.xsl"></templatetask></taskorder>"};\nreturn newMsg;",
          "outputs": 1,
          "noerr": 0,
          "x": 460,
          "y": 860,
          "wires": [
          [
          "5d131aad.853774",
          "ddbeea82.b7adf8"
          ]
          ]
          },
          {
          "id": "481d1366.247e4c",
          "type": "exec",
          "z": "6355756.629658c",
          "command": "curl -X POST -d @/volume1/iobroker/iobroker-data/files/vis.0/daten/27_4.xml "http://192.168.100.5:8001/service/task" --header "Content-Type:application/xml"",
          "addpay": false,
          "append": "",
          "useSpawn": "",
          "timer": "2",
          "name": "Output",
          "x": 790,
          "y": 900,
          "wires": [
          [],
          [],
          []
          ]
          },
          {
          "id": "5d131aad.853774",
          "type": "file",
          "z": "6355756.629658c",
          "name": "27_4 xml write",
          "filename": "/volume1/iobroker/iobroker-data/files/vis.0/daten/27_4.xml",
          "appendNewline": false,
          "createDir": false,
          "overwriteFile": "true",
          "x": 660,
          "y": 860,
          "wires": []
          },
          {
          "id": "ddbeea82.b7adf8",
          "type": "delay",
          "z": "6355756.629658c",
          "name": "2sec-del",
          "pauseType": "delay",
          "timeout": "2",
          "timeoutUnits": "seconds",
          "rate": "1",
          "nbRateUnits": "1",
          "rateUnits": "second",
          "randomFirst": "1",
          "randomLast": "5",
          "randomUnits": "seconds",
          "drop": false,
          "x": 660,
          "y": 900,
          "wires": [
          [
          "481d1366.247e4c"
          ]
          ]
          },
          {
          "id": "8d4efc4b.600eb",
          "type": "ioBroker in",
          "z": "6355756.629658c",
          "name": "temptoilet",
          "topic": "hm-rpc.0.KEQ0578061.4.ACTUAL_TEMPERATURE",
          "payloadType": "value",
          "onlyack": "",
          "func": "rbe",
          "gap": "",
          "x": 120,
          "y": 860,
          "wires": [
          [
          "f043e1c1.cc97c"
          ]
          ]
          },
          {
          "id": "744b6ade.5d1e54",
          "type": "ioBroker in",
          "z": "6355756.629658c",
          "name": "fenster",
          "topic": "hm-rpc.0.LEQ1470154.1.STATE",
          "payloadType": "value",
          "onlyack": "",
          "func": "rbe",
          "gap": "",
          "x": 450,
          "y": 980,
          "wires": [
          [
          "2acef966.8e4b96"
          ]
          ]
          },
          {
          "id": "f043e1c1.cc97c",
          "type": "function",
          "z": "6355756.629658c",
          "name": "temptoilet",
          "func": "var glob = (msg.payload);\nflow.set("temptoilet",glob);\nreturn msg;",
          "outputs": 1,
          "noerr": 0,
          "x": 260,
          "y": 860,
          "wires": [
          []
          ]
          },
          {
          "id": "d549b0c0.662e2",
          "type": "function",
          "z": "6355756.629658c",
          "name": "fenster",
          "func": "var glob = (msg.payload);\nflow.set("fenster",glob);\nreturn msg;",
          "outputs": 1,
          "noerr": 0,
          "x": 450,
          "y": 900,
          "wires": [
          [
          "b859cbc9.b0f1e8"
          ]
          ]
          },
          {
          "id": "2acef966.8e4b96",
          "type": "change",
          "z": "6355756.629658c",
          "name": "change",
          "rules": [
          {
          "t": "change",
          "p": "payload",
          "pt": "msg",
          "from": "true",
          "fromt": "bool",
          "to": "FENSTER OFFEN",
          "tot": "str"
          },
          {
          "t": "change",
          "p": "payload",
          "pt": "msg",
          "from": "false",
          "fromt": "bool",
          "to": "",
          "tot": "str"
          }
          ],
          "action": "",
          "property": "",
          "from": "",
          "to": "",
          "reg": false,
          "x": 460,
          "y": 940,
          "wires": [
          [
          "d549b0c0.662e2"
          ]
          ]
          },
          {
          "id": "e9e11b8d.1bca98",
          "type": "ioBroker in",
          "z": "6355756.629658c",
          "name": "tempkueche",
          "topic": "hm-rpc.0.JEQ0211467.1.TEMPERATURE",
          "payloadType": "value",
          "onlyack": "",
          "func": "rbe",
          "gap": "",
          "x": 130,
          "y": 920,
          "wires": [
          [
          "df4c5cdb.c9af2"
          ]
          ]
          },
          {
          "id": "df4c5cdb.c9af2",
          "type": "function",
          "z": "6355756.629658c",
          "name": "tempkueche",
          "func": "var glob = (msg.payload);\nflow.set("tempkueche",glob);\nreturn msg;",
          "outputs": 1,
          "noerr": 0,
          "x": 290,
          "y": 920,
          "wires": [
          []
          ]
          },
          {
          "id": "5ffa7c8c.d79f14",
          "type": "ioBroker in",
          "z": "6355756.629658c",
          "name": "tempchef",
          "topic": "hm-rpc.2.000313C99069FE.1.ACTUAL_TEMPERATURE",
          "payloadType": "value",
          "onlyack": "",
          "func": "rbe",
          "gap": "",
          "x": 120,
          "y": 980,
          "wires": [
          [
          "e2fb6395.08434"
          ]
          ]
          },
          {
          "id": "e2fb6395.08434",
          "type": "function",
          "z": "6355756.629658c",
          "name": "tempchef",
          "func": "var glob = (msg.payload);\nflow.set("tempchef",glob);\nreturn msg;",
          "outputs": 1,
          "noerr": 0,
          "x": 260,
          "y": 980,
          "wires": [
          []
          ]
          },
          {
          "id": "7712d5cf.1f7dcc",
          "type": "ioBroker in",
          "z": "6355756.629658c",
          "name": "templager",
          "topic": "hm-rpc.0.JEQ0012416.1.TEMPERATURE",
          "payloadType": "value",
          "onlyack": "",
          "func": "rbe",
          "gap": "",
          "x": 120,
          "y": 1040,
          "wires": [
          [
          "11958bef.65c544"
          ]
          ]
          },
          {
          "id": "11958bef.65c544",
          "type": "function",
          "z": "6355756.629658c",
          "name": "templager",
          "func": "var glob = (msg.payload);\nflow.set("templager",glob);\nreturn msg;",
          "outputs": 1,
          "noerr": 0,
          "x": 280,
          "y": 1040,
          "wires": [
          []
          ]
          }
          ]

          
          Hier noch das zugehörige XSL-Template (aus der Dokumentation abgewandeltes .xls):
          
          >! ````
          >!  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:template match="Record"><xsl:variable name="bgcolor"><xsl:choose><xsl:when test="room/field[@key='invert']/@value = '1'">black</xsl:when>
          				<xsl:otherwise>white</xsl:otherwise></xsl:choose></xsl:variable> 
          >! 		 <xsl:variable name="fgcolor"><xsl:choose><xsl:when test="room/field[@key='invert']/@value = '1'">white</xsl:when>
          				<xsl:otherwise>black</xsl:otherwise></xsl:choose></xsl:variable> 
          >! 		
          
          >! 			
          			 <field height="80" width="176" x="0" y="0"><xsl:attribute name="background-color"><xsl:value-of select="$bgcolor"></xsl:value-of></xsl:attribute>
          				 <text align="center" font-size="34" font-weight="bold"><xsl:attribute name="color"><xsl:value-of select="$fgcolor"></xsl:value-of></xsl:attribute>
          					 <xsl:value-of select="room/field[@key='Zeile1']/@value"></xsl:value-of></text></field> 
          >! 			
          			 <field height="22" width="176" x="0" y="81"><xsl:attribute name="background-color"><xsl:value-of select="$bgcolor"></xsl:value-of></xsl:attribute>
          				 <text align="left" font-size="18" font-weight="bold"><xsl:attribute name="color"><xsl:value-of select="$fgcolor"></xsl:value-of></xsl:attribute>
          					 <xsl:value-of select="room/field[@key='Zeile2']/@value"></xsl:value-of></text></field> 
          >! 			
          			 <field height="22" width="176" x="0" y="104"><xsl:attribute name="background-color"><xsl:value-of select="$bgcolor"></xsl:value-of></xsl:attribute>
          				 <text align="left" font-size="18" font-weight="bold"><xsl:attribute name="color"><xsl:value-of select="$fgcolor"></xsl:value-of></xsl:attribute>
          					 <xsl:value-of select="room/field[@key='Zeile3']/@value"></xsl:value-of></text></field> 
          >! 			
          			 <field height="22" width="176" x="0" y="127"><xsl:attribute name="background-color"><xsl:value-of select="$bgcolor"></xsl:value-of></xsl:attribute>
          				 <text align="left" font-size="18" font-weight="bold"><xsl:attribute name="color"><xsl:value-of select="$fgcolor"></xsl:value-of></xsl:attribute>
          					 <xsl:value-of select="room/field[@key='Zeile4']/@value"></xsl:value-of></text></field> 
          >! 			
          			 <field height="22" width="176" x="0" y="150"><xsl:attribute name="background-color"><xsl:value-of select="$bgcolor"></xsl:value-of></xsl:attribute>
          				 <text align="left" font-size="18" font-weight="bold"><xsl:attribute name="color"><xsl:value-of select="$fgcolor"></xsl:value-of></xsl:attribute>
          					 <xsl:value-of select="room/field[@key='Zeile5']/@value"></xsl:value-of></text></field> 
          
          			 <field align="left" height="35" width="100" x="40" y="220">![](../images/LiebigLogo_100_35.png)</field></xsl:template></xsl:stylesheet> 
          
          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate

          611
          Online

          31.7k
          Users

          79.8k
          Topics

          1.3m
          Posts

          2
          3
          2143
          Loading More Posts
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes
          Reply
          • Reply as topic
          Log in to reply
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
          The ioBroker Community 2014-2023
          logo