Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. peterfido

    NEWS

    • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar

    • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?

    • Monatsrückblick – September 2025

    P
    • Profile
    • Following 0
    • Followers 0
    • Topics 15
    • Posts 876
    • Best 86
    • Groups 2

    peterfido

    @peterfido

    97
    Reputation
    146
    Profile views
    876
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    peterfido Follow
    Pro Starter

    Best posts made by peterfido

    • RE: Anzeige ob Auto passend steht

      @negalein Tennisball von der Decke baumeln lassen. Berührt dieser die Scheibe, steht das Auto passend.

      posted in Off Topic
      P
      peterfido
    • RE: VIS -> keine gültige Lizenz gefunden

      Ich hatte zwar keine Probleme beim Serverausfall, hätte diese allerdings bekommen können. Daher habe ich nun auch den Gegenwert eines Freitags-Dönermann-Besuchs investiert und die offline Lizenz erworben.

      Eine Karenzzeit von wenigen Tagen würde der kostenlosen Lizenz nicht schaden. Steam z.b. lässt einen auch kostenlos ein paar Tage offline spielen. Der Telekom Receiver fährt offline allerdings nicht hoch, so dass auch nichts aufgenommenes gesehen werden kann. So war es zumindest "damals", als ich noch Entertain-Kunde war. Möglich, dass die Telekom da nachgebessert hat.

      Über KNX habe ich mich, als es relativ neu war, erkundigt. Was die da an Lizenzgebühren verlangt hatten, war schon nicht ohne. Wenn diese Lizenz auch benötigt wird, um an dem Adapter zu arbeiten, ist ein Preis gerechtfertigt. Obwohl ich es nicht nutze, halte ich auch da ein paar Tage Karenzzeit für vorteilhaft. 4 oder 5 Tage, um z.B. von Karfreitag bis Ostermontag überbrücken zu können, halte ich, auch für VIS, für angemessen und @Bluefox könnte im Fall der Fälle entspannt Oster-frei haben.

      posted in Error/Bug
      P
      peterfido
    • RE: Dockerinstallation auf Synology Firewalleinstellungen

      @mkaiser96
      Für sowas gibt es für kleines Geld Webhoster. Wenn da einer einbricht, ist das Netzwerk zuhause weiterhin sicher.

      Ich hatte vor Jahren eine Fotoalbum-Anwendung bei einem Hoster laufen. Das Sichten der Log-Dateien brachte weitere Erkenntnisse. Die Angreifer kommen nicht über die Haupttür, sondern testen alle möglichen Deeplinks aus. Das Absichern hat wohl mehr Zeit in Anspruch genommen, als das Einrichten und Pflegen der Inhalte. Ständig prüfen, ob es Updates gibt und diese einspielen. Zusätzlich regelmäßig in die Logs schauen, wo und wie die bösen Hacker / deren Skripte es aktuell versuchen. Tägliche Backups beim Hoster. Die Login-Seiten verändert, so dass eine IP nach vier Fehlversuchen automatisch geblockt wurde, die Anmeldeseite umgebogen, wer die originale aufgerufen hatte, wurde direkt geblock, und und und.

      Da der Hauptgedanke, auch Fotos anderer zu bekommen, eh nicht klappte, da die anderen immer nur geholt, aber nix hochgeladen haben, habe ich das Projekt irgendwann eingestampft und lasse die Website aus Nostalgiegründen jetzt nur noch lokal laufen.

      Zuhause sind nur die Ports für das VPN freigegeben, alles andere geschieht darüber.

      posted in Docker
      P
      peterfido
    • RE: Multicast / SMA-EM / USG / Netztrennung

      @lobomau

      Für Multicast über alle Netzwerke habe ich unter Dienste den MDNS aktiviert. Alle Netzwerke, die irgendwie übergreifend sein müssen, z.B. zum Drucken, pihole, Mediaserver, etc., sind als Unternehmen eingerichtet. Getrennt werden die dann durch Firewall-Regeln. Exposed Host habe ich nicht genutzt. Das Doppel-NAT stört nicht. Im Gegenteil sehe ich das als weitere Hürde, falls die Fritzbox oder das USG mal eine Sicherheitslücke haben sollten.

      Dann die Firewall-Regeln hauptsächlich in LAN IN ergänzt. Also welches Netzwerk darf auf welches Netzwerk, oder auch nur Einzelgerät, zugreifen. Dann habe ich noch die IP-Adresse der Fritzbox selbst für die meisten Netzwerke gesperrt.

      In LAN OUT ist nur die Regel für die Geräte mit Internetverbot ergänzt.

      In WAN IN nur zusätzlich die eine Regel für die SIP-Telefonie. Dafür braucht es in der Fritzbox auch noch eine Route. Die Portweiterleitungen für das VPN sind auch in der Fritzbox einzutragen.

      Trunk ist der Kofferraum, wo alles drin ist. Also Management LAN ohne TAG, alle anderen Netzwerke getaggt. Da nicht alle Geräte mit getaggten VLANs klar kommen, werden diese an den Ports wieder "enttaggt". Für die Endgeräte ist das dann wie ein "normales" Netzwerk. Die PVID setzt man dann, um den Daten vom Endgerät in den Trunk wieder ein TAG zu verpassen. Die ist also normal gleich der VLAN -ID. Bei Unifi nicht nötig, bei den von mir auch eingesetzten managebaren Zyxel-Switchen schon.

      Proxmox kann mit den Tags umgehen. Das heißt, der NUC hängt an einem Trunk-Port. Proxmox selbst läuft dann im Management LAN, die virtuellen Maschinen dann auf den VLANs, die man bei den Netzwerkkarten konfiguriert.

      posted in ioBroker Allgemein
      P
      peterfido
    • RE: Speicherplatz des Proxmox voll - aber womit?

      @guitardoc Die PVE bietet soweit alles notwendige per Weboberfläche. Die Konsole vom Host braucht man nur anfassen, wenn man da zusätzliche Programme wie z.B. NUT lokal statt auf einer VM installieren möchte.

      Ich bevorzuge immer noch VMs. Diese sind kernelunabhängig. Spätestens, wenn ein Gerät durchgeschliffen werden soll, sind diese arg im Vorteil.

      Um deine USB Platte zu prüfen, reicht auch ein PC, auf welchem Linux (als Livesystem (von USB)) läuft.

      Wenn du diese in einer VM testen wollen würdest, müsstest du die ganze USB Festplatte erstmal dort einbinden.

      Vor einem PVE Update am besten erstmal die Foren durchlesen. Im Proxmox-Forum findet man schnell heraus, wenn es Probleme geben sollte. Dann die Updates immer so zwei, drei Wochen verzögert einspielen. Dann sind fehlerhafte Updates meist schon zurückgezogen.

      posted in Proxmox
      P
      peterfido
    • RE: Strommessung Backofen 3-Pasen (Starkstrom), MQTT

      @martinp Die Teile sehen aber abenteuerlich aus. Die Trennung / Isolierung lässt sich auf der Platine nicht erkennen. Die Abstände sind mir zu klein und gefräst ist da auch nichts. Da hätte ich Angst um die Geräte, welche am TTL Port sitzen und den Taster würde ich auch nicht mit blossem Finger drücken wollen. 😉

      Ein fertiger Zähler von z.B. Eastron , Orno oder B + G E Tech mit Modbus bietet in einem berührungssicherem Gehäuse normal Spannung, Strom, Scheinleistung, Wirkleistung, Zählerstand, Frequenz.

      posted in Hardware
      P
      peterfido
    • Modbus als Slave

      Hallo,

      anbei ein Beispiel, wie der Modbus Adapter als Slave genutzt werden kann.
      Als Gegenpart habe ich Node-Red (node-red-contrib-modbus) auf dem selben ioBroker auf meinem Testsystem genutzt.

      Die Einstellungen vom Modbus-Adapter sind wie folgt:
      5aff0599-bde1-4dbc-8f46-5f4fa0999aa9-image.png
      b40af96c-01c5-4743-b792-a66f86a624d3-image.png
      1c725da9-51b1-410b-96df-3e1da672887b-image.png
      64682af9-b7c3-43e1-abd5-d2259150eb70-image.png
      70189118-427a-473d-b199-85e071293637-image.png

      Ein Javascript unterstützt mit einer Uhr und kopieren der empfangen Werte in die Ausgangsregister. Die Uhr muss von Hand aktualisiert werden, damit die nicht in die Tests reingrätscht.

      //Modbus Test   
      createState('0_userdata.0.Modbus.Uhrakt', { 
          type: 'boolean',
          def: false,
          role: 'value'
      });   
         
      function Uhr(){
         
          var today = new Date();
          var Stunde = today.getHours();
          var Minute = today.getMinutes();
          var Sekunde = today.getSeconds();
          var Wochentag = today.getDay();
          var Tag = today.getDate();
          var Monat = today.getMonth()+1;
          var Jahr = today.getFullYear();
      
          setState("modbus.0.inputRegisters.30001",Stunde);
          setState("modbus.0.inputRegisters.30002",Minute);
          setState("modbus.0.inputRegisters.30003",Sekunde);
          setState("modbus.0.inputRegisters.30004",Tag);
          setState("modbus.0.inputRegisters.30005",Monat);
          setState("modbus.0.inputRegisters.30006",Jahr);
      
          setState("modbus.0.holdingRegisters.40001",Stunde);
          setState("modbus.0.holdingRegisters.40002",Minute);
          setState("modbus.0.holdingRegisters.40003",Sekunde);
          setState("modbus.0.holdingRegisters.40004",Tag);
          setState("modbus.0.holdingRegisters.40005",Monat);
          setState("modbus.0.holdingRegisters.40006",Jahr);
      }
      
      on({id:  /modbus.0.coils.*/, change: 'ne'}, function (dp) {
          log(dp.id);
          var nr = dp.id.substring(15);
          if(nr.length == 1){
              nr = "0"+nr;
          }
          nr="modbus.0.discreteInputs.100"+nr;
          setState(nr,dp.state.val);
      });
      
      on({id:  "0_userdata.0.Modbus.Uhrakt", change: 'any'}, function (dp) {
          Uhr();
      });
      

      Node-Red Übersicht:
      ef0c2276-5666-46f0-a32d-923b1cd5442c-image.png

      Node-Red Export:

      [
          {
              "id": "076b7140f384fc31",
              "type": "tab",
              "label": "Flow 2",
              "disabled": false,
              "info": "",
              "env": []
          },
          {
              "id": "43e4d53f0aa39c48",
              "type": "inject",
              "z": "076b7140f384fc31",
              "name": "Uhr lesen",
              "props": [
                  {
                      "p": "payload"
                  },
                  {
                      "p": "topic",
                      "vt": "str"
                  }
              ],
              "repeat": "",
              "crontab": "",
              "once": false,
              "onceDelay": 0.1,
              "topic": "",
              "payload": "true",
              "payloadType": "bool",
              "x": 220,
              "y": 100,
              "wires": [
                  [
                      "ef3b8568dabbb9a9"
                  ]
              ]
          },
          {
              "id": "ef3b8568dabbb9a9",
              "type": "modbus-getter",
              "z": "076b7140f384fc31",
              "name": "FC4 lesen",
              "showStatusActivities": false,
              "showErrors": false,
              "showWarnings": true,
              "logIOActivities": false,
              "unitid": "1",
              "dataType": "InputRegister",
              "adr": "0",
              "quantity": "6",
              "server": "8f608791ee2c56ec",
              "useIOFile": false,
              "ioFile": "",
              "useIOForPayload": false,
              "emptyMsgOnFail": false,
              "keepMsgProperties": false,
              "delayOnStart": false,
              "startDelayTime": "",
              "x": 390,
              "y": 100,
              "wires": [
                  [
                      "70de74696eb9b0a9"
                  ],
                  []
              ]
          },
          {
              "id": "785e128808df5243",
              "type": "modbus-getter",
              "z": "076b7140f384fc31",
              "name": "HR 3 lesen",
              "showStatusActivities": false,
              "showErrors": false,
              "showWarnings": true,
              "logIOActivities": false,
              "unitid": "1",
              "dataType": "HoldingRegister",
              "adr": "0",
              "quantity": "6",
              "server": "8f608791ee2c56ec",
              "useIOFile": false,
              "ioFile": "",
              "useIOForPayload": false,
              "emptyMsgOnFail": false,
              "keepMsgProperties": false,
              "delayOnStart": false,
              "startDelayTime": "",
              "x": 390,
              "y": 200,
              "wires": [
                  [
                      "a8f80e0b0790e348"
                  ],
                  []
              ]
          },
          {
              "id": "9dd6f491f92368e1",
              "type": "catch",
              "z": "076b7140f384fc31",
              "name": "",
              "scope": null,
              "uncaught": false,
              "x": 180,
              "y": 620,
              "wires": [
                  [
                      "67f50288d77837d7"
                  ]
              ]
          },
          {
              "id": "67f50288d77837d7",
              "type": "debug",
              "z": "076b7140f384fc31",
              "name": "debug",
              "active": true,
              "tosidebar": true,
              "console": false,
              "tostatus": false,
              "complete": "payload",
              "targetType": "msg",
              "statusVal": "",
              "statusType": "auto",
              "x": 410,
              "y": 620,
              "wires": []
          },
          {
              "id": "8237112949c7f3af",
              "type": "modbus-getter",
              "z": "076b7140f384fc31",
              "name": "Discrete Inputs lesen",
              "showStatusActivities": false,
              "showErrors": false,
              "showWarnings": true,
              "logIOActivities": false,
              "unitid": "1",
              "dataType": "Input",
              "adr": "0",
              "quantity": "16",
              "server": "8f608791ee2c56ec",
              "useIOFile": false,
              "ioFile": "",
              "useIOForPayload": false,
              "emptyMsgOnFail": false,
              "keepMsgProperties": false,
              "delayOnStart": false,
              "startDelayTime": "",
              "x": 400,
              "y": 520,
              "wires": [
                  [
                      "911846b7835d27b1"
                  ],
                  []
              ]
          },
          {
              "id": "afdcf980395e649d",
              "type": "inject",
              "z": "076b7140f384fc31",
              "name": "",
              "props": [
                  {
                      "p": "payload"
                  },
                  {
                      "p": "topic",
                      "vt": "str"
                  }
              ],
              "repeat": "",
              "crontab": "",
              "once": false,
              "onceDelay": 0.1,
              "topic": "",
              "payload": "true",
              "payloadType": "bool",
              "x": 210,
              "y": 200,
              "wires": [
                  [
                      "785e128808df5243"
                  ]
              ]
          },
          {
              "id": "7b47194372033d3a",
              "type": "inject",
              "z": "076b7140f384fc31",
              "name": "",
              "props": [
                  {
                      "p": "payload"
                  },
                  {
                      "p": "topic",
                      "vt": "str"
                  }
              ],
              "repeat": "",
              "crontab": "",
              "once": false,
              "onceDelay": 0.1,
              "topic": "",
              "payload": "true",
              "payloadType": "bool",
              "x": 190,
              "y": 380,
              "wires": [
                  [
                      "38dce709eb85f4cd"
                  ]
              ]
          },
          {
              "id": "dad7162bfc539315",
              "type": "inject",
              "z": "076b7140f384fc31",
              "name": "",
              "props": [
                  {
                      "p": "payload"
                  },
                  {
                      "p": "topic",
                      "vt": "str"
                  }
              ],
              "repeat": "",
              "crontab": "",
              "once": false,
              "onceDelay": 0.1,
              "topic": "",
              "payload": "true",
              "payloadType": "bool",
              "x": 190,
              "y": 520,
              "wires": [
                  [
                      "8237112949c7f3af"
                  ]
              ]
          },
          {
              "id": "70de74696eb9b0a9",
              "type": "function",
              "z": "076b7140f384fc31",
              "name": "Input Register",
              "func": "\nnode.status({ text: msg.payload[3] + \".\" + msg.payload[4] + \".\" + msg.payload[5] + \", \" +  msg.payload[0] + \":\" + msg.payload[1] + \":\" + msg.payload[2] });\nreturn msg;",
              "outputs": 1,
              "timeout": 0,
              "noerr": 0,
              "initialize": "",
              "finalize": "",
              "libs": [],
              "x": 840,
              "y": 80,
              "wires": [
                  []
              ]
          },
          {
              "id": "a8f80e0b0790e348",
              "type": "function",
              "z": "076b7140f384fc31",
              "name": "Holding Register",
              "func": "\nnode.status({ text: msg.payload[3] + \".\" + msg.payload[4] + \".\" + msg.payload[5] + \", \" +  msg.payload[0] + \":\" + msg.payload[1] + \":\" + msg.payload[2] });\nreturn msg;",
              "outputs": 1,
              "timeout": 0,
              "noerr": 0,
              "initialize": "",
              "finalize": "",
              "libs": [],
              "x": 850,
              "y": 180,
              "wires": [
                  []
              ]
          },
          {
              "id": "911846b7835d27b1",
              "type": "function",
              "z": "076b7140f384fc31",
              "name": "Discrete Inputs",
              "func": "\nnode.status({ text: msg.payload[0] + \",\" + msg.payload[1] + \",\" + msg.payload[2] + \",\" + msg.payload[3] + \",\" + msg.payload[4] + \",\" + msg.payload[5] + \",\" + msg.payload[6] + \",\" + msg.payload[7] + \",\" + msg.payload[8] + \",\" + msg.payload[9] + \",\" + msg.payload[10] + \",\" + msg.payload[11] + \",\" + msg.payload[12] + \",\" + msg.payload[13] + \",\" + msg.payload[14] + \",\" + msg.payload[15] });\nreturn msg;",
              "outputs": 1,
              "timeout": 0,
              "noerr": 0,
              "initialize": "",
              "finalize": "",
              "libs": [],
              "x": 780,
              "y": 520,
              "wires": [
                  []
              ]
          },
          {
              "id": "f6bbf853944e2b8e",
              "type": "inject",
              "z": "076b7140f384fc31",
              "name": "",
              "props": [
                  {
                      "p": "payload"
                  },
                  {
                      "p": "topic",
                      "vt": "str"
                  }
              ],
              "repeat": "",
              "crontab": "",
              "once": false,
              "onceDelay": 0.1,
              "topic": "0_userdata.0.Modbus.Uhrakt",
              "payload": "true",
              "payloadType": "bool",
              "x": 290,
              "y": 40,
              "wires": [
                  [
                      "2ecfa1e07d7ac8ce"
                  ]
              ]
          },
          {
              "id": "2ecfa1e07d7ac8ce",
              "type": "ioBroker out",
              "z": "076b7140f384fc31",
              "name": "",
              "topic": "",
              "ack": "false",
              "autoCreate": "false",
              "stateName": "",
              "role": "",
              "payloadType": "",
              "readonly": "",
              "stateUnit": "",
              "stateMin": "",
              "stateMax": "",
              "x": 540,
              "y": 40,
              "wires": []
          },
          {
              "id": "e0e451832374cbb0",
              "type": "modbus-write",
              "z": "076b7140f384fc31",
              "name": "FC 15 Coils schreiben",
              "showStatusActivities": true,
              "showErrors": true,
              "showWarnings": true,
              "unitid": "77",
              "dataType": "MCoils",
              "adr": "0",
              "quantity": "16",
              "server": "8f608791ee2c56ec",
              "emptyMsgOnFail": false,
              "keepMsgProperties": false,
              "delayOnStart": false,
              "startDelayTime": "",
              "x": 900,
              "y": 380,
              "wires": [
                  [],
                  []
              ]
          },
          {
              "id": "2a3a2f3bd75e5784",
              "type": "inject",
              "z": "076b7140f384fc31",
              "name": "",
              "props": [
                  {
                      "p": "payload"
                  },
                  {
                      "p": "topic",
                      "vt": "str"
                  }
              ],
              "repeat": "",
              "crontab": "",
              "once": false,
              "onceDelay": 0.1,
              "topic": "",
              "payload": "false",
              "payloadType": "bool",
              "x": 190,
              "y": 440,
              "wires": [
                  [
                      "38dce709eb85f4cd"
                  ]
              ]
          },
          {
              "id": "38dce709eb85f4cd",
              "type": "function",
              "z": "076b7140f384fc31",
              "name": "Coils erstellen",
              "func": "var bool = msg.payload;\nmsg.payload = [bool, !bool, bool, !bool, bool, !bool, bool, !bool, bool, !bool, bool, !bool, bool, !bool, bool, !bool]\nnode.status({ text: msg.payload[0] + \",\" + msg.payload[1] + \",\" + msg.payload[2] + \",\" + msg.payload[3] + \",\" + msg.payload[4] + \",\" + msg.payload[5] + \",\" + msg.payload[6] + \",\" + msg.payload[7] + \",\" + msg.payload[8] + \",\" + msg.payload[9] + \",\" + msg.payload[10] + \",\" + msg.payload[11] + \",\" + msg.payload[12] + \",\" + msg.payload[13] + \",\" + msg.payload[14] + \",\" + msg.payload[15] });\n\nreturn msg;",
              "outputs": 1,
              "timeout": 0,
              "noerr": 0,
              "initialize": "",
              "finalize": "",
              "libs": [],
              "x": 380,
              "y": 380,
              "wires": [
                  [
                      "e0e451832374cbb0"
                  ]
              ]
          },
          {
              "id": "f49483843b20ed8f",
              "type": "modbus-write",
              "z": "076b7140f384fc31",
              "name": "Mehrere Register schreiben",
              "showStatusActivities": false,
              "showErrors": false,
              "showWarnings": true,
              "unitid": "1",
              "dataType": "MHoldingRegisters",
              "adr": "0",
              "quantity": "6",
              "server": "8f608791ee2c56ec",
              "emptyMsgOnFail": false,
              "keepMsgProperties": false,
              "delayOnStart": false,
              "startDelayTime": "",
              "x": 680,
              "y": 300,
              "wires": [
                  [],
                  []
              ]
          },
          {
              "id": "13dc061ca308d6c3",
              "type": "function",
              "z": "076b7140f384fc31",
              "name": "Werte erstellen",
              "func": "var fak = 1;\nif(msg.payload){\n    fak=10;\n}\nmsg.payload = [1 * fak, 2 * fak, 3 * fak, 4 * fak, 5 * fak, 6 * fak]\nnode.status({ text: msg.payload[0] + \",\" + msg.payload[1] + \",\" + msg.payload[2] + \",\" + msg.payload[3] + \",\" + msg.payload[4] + \",\" + msg.payload[5]});\n\nreturn msg;",
              "outputs": 1,
              "timeout": 0,
              "noerr": 0,
              "initialize": "",
              "finalize": "",
              "libs": [],
              "x": 380,
              "y": 300,
              "wires": [
                  [
                      "f49483843b20ed8f"
                  ]
              ]
          },
          {
              "id": "9929366dd363ba55",
              "type": "inject",
              "z": "076b7140f384fc31",
              "name": "*10",
              "props": [
                  {
                      "p": "payload"
                  },
                  {
                      "p": "topic",
                      "vt": "str"
                  }
              ],
              "repeat": "",
              "crontab": "",
              "once": false,
              "onceDelay": 0.1,
              "topic": "",
              "payload": "true",
              "payloadType": "bool",
              "x": 190,
              "y": 280,
              "wires": [
                  [
                      "13dc061ca308d6c3"
                  ]
              ]
          },
          {
              "id": "6e7c45f923caa5db",
              "type": "inject",
              "z": "076b7140f384fc31",
              "name": "*1",
              "props": [
                  {
                      "p": "payload"
                  },
                  {
                      "p": "topic",
                      "vt": "str"
                  }
              ],
              "repeat": "",
              "crontab": "",
              "once": false,
              "onceDelay": 0.1,
              "topic": "",
              "payload": "false",
              "payloadType": "bool",
              "x": 190,
              "y": 320,
              "wires": [
                  [
                      "13dc061ca308d6c3"
                  ]
              ]
          },
          {
              "id": "8f608791ee2c56ec",
              "type": "modbus-client",
              "name": "",
              "clienttype": "tcp",
              "bufferCommands": true,
              "stateLogEnabled": false,
              "queueLogEnabled": true,
              "failureLogEnabled": true,
              "tcpHost": "127.0.0.1",
              "tcpPort": "502",
              "tcpType": "DEFAULT",
              "serialPort": "/dev/ttyUSB",
              "serialType": "RTU-BUFFERD",
              "serialBaudrate": "9600",
              "serialDatabits": "8",
              "serialStopbits": "1",
              "serialParity": "none",
              "serialConnectionDelay": "100",
              "serialAsciiResponseStartDelimiter": "0x3A",
              "unit_id": "77",
              "commandDelay": "1",
              "clientTimeout": "1000",
              "reconnectOnTimeout": true,
              "reconnectTimeout": "2000",
              "parallelUnitIdsAllowed": true,
              "showErrors": true,
              "showWarnings": true,
              "showLogs": true
          }
      ]
      

      Man kann die Uhr stellen, die Werte ablegen und wieder einlesen.

      posted in Praktische Anwendungen (Showcase)
      P
      peterfido
    • RE: Status 504 bei Grafana auf dem raspi

      @homoran Meines Wissens nach mittels

      sudo apt-mark hold grafana
      sudo apt-mark hold influxdb2-cli
      sudo apt-mark hold influxdb2
      

      Rückgängig geht das mit

      sudo apt-mark unhold .... 
      

      Thomas Braun war schneller 😊

      posted in Grafana
      P
      peterfido
    • RE: ESP32 als Wifi Access Point?

      @dieter_p Es gibt wohl Projekte, welche den ESP32 als AP oder gar Router nutzen.
      Das ist aber immer langsamer als ein 16 Euro TP-Link WR841n.

      posted in Microcontroller
      P
      peterfido
    • RE: Kostenpflichtige iobroker Adapter

      Moin,

      ich stehe kostenpflichtigen Adaptern kritisch gegenüber.

      Als ich mich damals mit KNX auseindersetzen wollte, wurde mir klar, dass das durchaus eine "Gelddruckmaschine" für die Entwickler / Hersteller / Whatever zu sein scheint. Für reines Interesse war mir das einfach zu teuer. Also verwarf ich den Gedanken an KNX wieder.

      Wenn es Adapter gibt, die zukünftig Geld kosten sollen, wird es wohl darauf hinaus laufen, dass der ein oder andere die Updates abschaltet und mit der letzten lauffähigen kostenlosen Version arbeiten. Das Image von ioBroker könnte dadurch in Mitleidenschaft gezogen werden. (veraltet / unsicher, etc.)

      Jetzt die andere Seite: Angenommen, ich habe in teure Hard- und Software investiert. Nennen wir sie ruhig als Beispiel KNX. Diese möchte ich, auch aufgrund meiner Fertigkeiten, in ioBroker einbinden. Also programmiere ich einen Adapter dafür. Gibt es Updates, muss ich den Adapter pflegen. Das kostet Zeit und evtl. sogar Geld für KNX Software - und Hardware. Denn der Adapter soll auch mit Aktoren umgehen können, die ich selbst nicht habe. >> Welche Möglichkeiten gibt es, um die eigenen Kosten so gering wie möglich zu halten?

      • Hardware-Spenden durch Boardkollegen, die mir gewünscht integrierte Hardware zur Verfügung stellen? - Darauf bauen würde ich nicht.
      • Hardware, welche mir der Hersteller kostenfrei zur Verfügung stellt, damit das Projekt hier neue Kunden akquiriert? - Die Wahrscheinlichkeit ist gering.
      • Ich betrachte es als teures Hobby und kaufe alle möglichen Aktoren, womöglich in Varianten auf eigene Rechnung - Wohl kaum.

      Da bleibt wohl bald nur Gewerbe anmelden und Adapter vermarkten. << Damit würde ich mich allerdings auch verpflichtet fühlen, dass alle Aktoren laufen, Updates zeitnah kommen und hier und da wohl Support geleistet werden muss.

      Was, wenn ich einen Adapter programmiere, was mich Zeit, Nerven, Recherche und evtl. viel Kaffee kostet?

      • Nutze ich täglich kostenlos Adapter anderer Boardkollegen?
      • Ist es einer meiner Hobbies?
      • Leisten evtl. Boardkollegen kostenlos Support für die Nutzer "meines" Adapters?
      • Muss ich dann nicht ioBroker irgendwie an dem Gewinn beteiligen?

      Lohnt es sich also, dafür evtl. ein Gewerbe anzumelden und Geld dafür zu verlangen?

      Sicher - das mit dem Gewerbe wird kaum einer machen. Andererseits ist die Gefahr, dass ein zahlender "Kunde", welcher sich, aus welchen Gründen auch immer, dazu motiviert sieht, dem Finanzamt einen Tipp zu geben, nicht auszuschließen.

      posted in ioBroker Allgemein
      P
      peterfido

    Latest posts made by peterfido

    • RE: Höhere Mathematik: Vorzeichen ggf. entfernen

      @hans_999 Ich nutze kein Blockly. In Javascript nimmt man Math.abs(wert)

      posted in Blockly
      P
      peterfido
    • RE: Angebot für Kiosk App

      @smintlife
      Ein Test mit go2rtc als Zwischenstation lässt die rtsp abspielen. Das nutzt jetzt nicht wirklich, da Fully die Streams von go2rtc auch abspielt. Allerdings beide mit einer gewissen Latenz, da erst go2rtc die Streams von Protect holt, und dann die Kiosk Apps von go2rtc. Da ist mir die Latenz zu groß, daher klingt Deine Kiosk-App da mit der direkten Unterstützung von rtsp vielversprechender.

      Ich habe eben die Kiosk App auf meinem Tablet in der Küche versucht zu installieren. Die wird für das Gerät (Android 8.1.0) nicht angeboten. Somit kann ich da nichts weiter testen. Fully läuft da in der Version vom Oktober diesen Jahres. Evtl. kannst du die Kompatibilität nach älteren Andoid-Versionen vergrößern.

      posted in Marktplatz
      P
      peterfido
    • RE: Angebot für Kiosk App

      @smintlife Sichere Verbindung wundert mich, da ich extra von rtsps auf rtsp ändern muss. Lasse ich rtsps, dann verweigern auch VLC und Tynicam die Wiedergabe.

      Bei Unifi Protect kann man nicht mehr einstellen. Die Audio-Streams sind da Standard. Welche Codecs das Galaxy Tab A7 hardwareseitig unterstützt, weiß ich nicht. Andere werden andere Tablets haben. Im Wohnzimmer / für Smarthome allgemein gehe ich eher von älteren Geräten aus. Somit bleibt da nur ein Software-Codec. Ich kann es auch nicht mit dem aktuellen Tab S8 testen, da ich dort ein anderes Google Konto nutze und somit die Kiosk App nicht mal eben kostenlos installieren kann.

      posted in Marktplatz
      P
      peterfido
    • RE: Angebot für Kiosk App

      @smintlife Danke, klingt gut. Könnte allerdingsn icht das Problem sein. Eben getestet_ Tinycam free spielt es auch unter TCP ab. Unter Stream Infos steht:

      Protokoll: RTSP over TCP
      Sichere Verbindung: Ja - wundert mich etwas
      Angezeigte Bilder: 30.0 - fps schwankt +- 0.3 fps
      Empfangene Bilder: 30.0 - fps. schwankt +- 0.3 fps
      Ausgelassene Bilder 0%
      Datenrate:  52 - 132 KB/s - während des kurzen Tests
      Auflösung: 1600x1200
      Codec: H264 SW
      

      Interessanterweise gibt es auch Bild unter Protokoll HTTP.
      Unter RTSP over UDP Multicast gibt es kein Bild.
      Undefiniert, try to guess bringt auch ein Bild, verääte dann aber das Protokoll nicht.

      Im Unifi Protect kann ich drei verschiedene Qualitäten / Auflösungen einstellen, die kleineren Auflösungen bringen aber keine Abhilfe. Eine Änderung allerdings schon:

      Hohe Auflösung:
      Screenshot_20251108-083039_NexusViewPanel.jpg

      Kleine Auflösung: bleibt dauerhaft animiert.
      Screenshot_20251108-083050_NexusViewPanel.jpg

      Edit: Codec Infos aus VLC:
      Screenshot_20251108-084315_VLC.jpg

      posted in Marktplatz
      P
      peterfido
    • RE: Angebot für Kiosk App

      @smintlife Die neue Version ist installiert. Ich habe einen zweiten Tab eingerichtet, wo der rtsp Stream einer Unifi Kamera angezeigt werden soll.

      Es zeigt nur ein schwarzes Bild mit einem kleinen Wiederholen-Kreis in der Mitte des Bildschirms an. Der selbe Link in VLC eingefügt, spielt das Video ab. Die Unterstützung von rtsp war der Grund, von Fully zu wechseln. Ich nutze einen unverschlüsselten Stream unter rtsp://IP:7447/streamid

      Edit: tinycam free spielt es auch ab. Da muss ich bei Protokoll rtsp over udp angeben.

      posted in Marktplatz
      P
      peterfido
    • RE: Angebot für Kiosk App

      @smintlife Der Code wurde jetzt freigegeben und die App habe ich installiert. Muss mich damit noch befassen und eine eigene Seite erstellen, da die Auflösung anders als bei Fully ist. Es fehlt etwas vom rechten Rand. Am Wochenende mache ich evtl. weiter. Mal schauen, wie ich die View so einrichte, dass die nächste Seite mit dem RTSP Stream läuft, während ein Datenpunkt aktiv ist.

      Aufgefallen ist mir, dass es wohl kein einfaches Beenden durch von links swipen und dann Exit Knopf oder so gibt.

      posted in Marktplatz
      P
      peterfido
    • RE: Frame with weather api shows “404 page not found”

      @eduardo Als Adresse muss nur die URL rein, nicht der iFrame-Code drumherum. Also nur

      https://api.wetteronline.de/wetterwidget?gid=10382&modeid=CW2&seourl=berlin&locationname=Berlin&lang=de
       
      
      posted in Visualization
      P
      peterfido
    • RE: Angebot für Kiosk App

      @smintlife Die App steht in keinen guten Sternen. Da ich auf dem Wohzimmer-Tablet ein separates Google-Konto habe, bin ich eben zu Netto, einen 5 Euro Gutschein kaufen und dann sagt der Play-Store, dass es da ein Problem mit dem Code gibt. Jetzt will Google meinen Bon und Co prüfen, was wohl mehrere Wochen dauern kann. Wie lange wird der Preis von 4,99€ stabil bleiben?

      posted in Marktplatz
      P
      peterfido
    • RE: Puppeteer Adapter

      @oliverio Ein altes Android Tablet, welches Android 4.4.2 als höchste Version bekommen hat, habe ich, bis auf eine Flot-Grafik, manuell per Node-Red gefüllt. Die Flot-Grafik lasse ich jetzt minütlich unter /dev/shm im RAM ablegen, und kann da auch prima per Node-Red dran und ans Tablet ausliefern.

      Der Javascript-Adapter hat alle Parameter mit Fragezeichen? als fehlerhaft markiert. Daher habe ich alle Fragezeichen entfernt. Der Parameter quality wird nicht mehr unterstützt. Bei path muss der Dateiname mit rein, sonst gibt es eine Fehlermeldung, welche danach aussieht, dass der Ordner als Ziel genutzt wird. Ein paar Semikolon und Kommas musste ich auch noch korrigieren,

      Bei der Installation musste ich chromium noch manuell nachinstallieren.

      peter@iob:~$ sudo apt install chromium -y
      

      In der Instanz noch Externen Browser anhaken und den Pfad angeben.

      /usr/bin/chromium
      

      Mein aktuelles Skript:

      function Temptendenz(){
         sendTo('puppeteer.0', 'screenshot', { url: 'http://192.168.2.24:8082/vis-2/?tendenz#startseite',
             ioBrokerOptions: {
                 /**
                  * Define a filename for the ioBroker storage e.g. test.png
                  */
                 storagePath: 'tendenz.png',
             },
             /**
              * Define at most one wait option
              * You can also look for other waitOptions currently supported by Puppeteer API
              * see e.g. https://puppeteer.github.io/puppeteer/docs/puppeteer.page.waitforfilechooser
              */
             waitOption: {
                 /**
                  * Define a Timeout in ms
                  */
                 waitForTimeout: 5000,
             
                 /**
                  * Wait for a given id/tag/etc to be occured
                  */
                 waitForSelector: 'w000680',
             },
             /**
              * Optionally, specify the viewport manually, see https://pptr.dev/api/puppeteer.viewport
              */
             viewportOptions: {
                 width: 800,
                 height: 600
             },
             /**
              * The file path to save the image to. The screenshot type will be inferred
              * from file extension. If path is a relative path, then it is resolved
              * relative to current working directory. If no path is provided, the image
              * won't be saved to the disk.
              */
             path: '/dev/shm/tendenz.png',
             /**
              * When true, takes a screenshot of the full page.
              * @defaultValue false
              */
             fullPage: false,
             /**
              * An object which specifies the clipping region of the page.
              */
             clip: {         
                 x: 0,
                 y: 0,
                 width: 223,
                 height: 47 
             },
             /**
              * Quality of the image, between 0-100. Not applicable to `png` images.
              */
         //      quality: 100,
             /**
              * Hides default white background and allows capturing screenshots with transparency.
              * @defaultValue false
              */
             omitBackground: true,
             /**
              * Encoding of the image.
              * @defaultValue 'binary'
              */
             encoding:  'binary',       //'base64' | 'binary',
             /**
              * If you need a screenshot bigger than the Viewport
              * @defaultValue true
              */
             captureBeyondViewport: false,
         }, obj => {
             if (obj.error) {
                 log(`Error taking screenshot: ${obj.error.message}`, 'error');
             } else {
                 // the binary representation of the image is contained in `obj.result`
                 log(`Successfully took screenshot: ${obj.result}`);
             }
         });
      }
      //'*/30 * * * * *'
      schedule("* * * * *", function(){
         Temptendenz();
      });
      
      Temptendenz();
      

      posted in ioBroker Allgemein
      P
      peterfido
    • RE: Alexa-Anbindung eines Dimmers mit Node-RED

      @schnipsel71 Häng mal hinter Spots ein Debug-Node mit der Konfig komplettes Nachrichtenobjekt. Dann Alexa bitten, die Helligkeit auf 33 Prozent zu setzen. Die Ausgabe des Debug-Nodes hier posten.

      Beispiel: Wenn ich sage, Alexa, Gartenlicht 30 Prozent, kommt Folgendes raus:

      fb545bab-a095-455b-b86f-ad9759d6bdcb-image.png

      Meine Rückmeldung an Alexa sieht so aus:

      bfd627c6-ff85-46e1-9475-0786afab94b2-image.png

      var nodeid = "idDesNodesGartenLicht";
      var obj = JSON.parse(msg.payload);
      var ison=obj.on;
      var proz=obj.percentage;
      var hex=obj.rgb;
      var hell=parseInt(obj.bri*255/100);
      var color = [];
      color[0] = parseInt (hex.substring (0, 2), 16);
      color[1] = parseInt (hex.substring (2, 4), 16);
      color[2] = parseInt (hex.substring (4, 6), 16);
      
      var newMsg={
          payload: ''
      }
      
      newMsg.payload= {
          nodeid: nodeid,
          on: ison,
          bri: hell,
          rgb: color
          }
      
      node.status({text:"on: "+ison+", proz:"+proz});
      return newMsg;
      

      posted in Node-Red
      P
      peterfido
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo