Navigation

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

    NEWS

    • [erledigt] 15. 05. Wartungsarbeiten am ioBroker Forum

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Profile
    • Following 0
    • Followers 0
    • Topics 4
    • Posts 111
    • Best 1
    • Groups 2

    Wiednitz

    @Wiednitz

    1
    Reputation
    44
    Profile views
    111
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    Wiednitz Follow
    Pro Starter

    Best posts made by Wiednitz

    • RE: Growatt Wechselrichter über Modbus auslesen - gelöst -

      @smartboart

      Growatt Modbus Daten per RS232 Wifi Bridge an Iobroker senden

      Ziel war es die Daten per Wifi an Iobroker zu senden. Die vom Modbus verarbeiteten Daten stelle ich dann auf dem Tochscreen im Flur dar,

      IMG_20191026_142624.jpg
      die Aktualisierung erfolgt etwa aller 10 Sekunden mit Shine Stick, ohne Stick stellt man den Intervall im Modbus Adapter ein.

      Benötigte Hardware:

      -1 x RS232 Stecker mit Mainboard Anschlusskabel und Buchse
      -1 x RS232 Stecker Männlich
      -1 x RS232 Buchse Weiblich oder Stecker mit Gender Changer
      -MAX3232 RS232 Schnittstelle auf TTL Konverter Modul
      -LM317 mit R1 240 Ohm und R2 720 Ohm
      -Lochrasterplatine, Jumperkabel, Stiftleiste
      -WEMOS D1 mini oder NodeMCU

      Die RS232 Anschlüsse, den LM317 und die Widerstände habe ich aus alter PC Hardware gewonnen, das TTL Modul und den WEMOS in China bestellt. Der Inverter stellt am RS232 Pin9 8 Volt Spannung bereit, der LM317 macht mit den beiden Widerständen 5 Volt daraus. Die werden an VIn des WEMOS gegeben, dessen 3,3 Volt Anschluss versorgt den TTL Wandler, damit der 3,3 Volt Pegel an TX und RX für den WEMOS bereitstellt. Man kann die Spannungsversorgung natürlich auch mit einem USB Netzteil realisieren.

      Pin2 am RS232 Anschluss des Inverter ist TX, Pin3 ist RX, Pin5 GND, Pin9 Spannung. Diese werden 1:1 mit der RS232 Buchse für den Shine Stick verbunden, sofern dieser mit genutzt werden soll.

      Soll der Shine Wifi Stick genutzt werden, gelten folgende Verbindungen: TX Leitung vom Inverter an RX Pin3 am RS232 Stecker für TTL Wandler, RX vom TTL an RX am WEMOS. Die RX Leitung vom Inverter hat keine Verbindung zum TTL, respektive zum WEMOS. Der Modbus Adapter empfängt dann nur die Daten mit, die vom Shine Stick angefordert werden. Ist die RX Leitung mit verbunden, funktioniert der Shine Stick nicht. Bei dieser Variante kommt es jedoch zu Fehlermeldungen im Log des Iobroker/Modbus, die Daten werden jedoch meist korrekt gelesen, ab und zu jedoch auch Nonsens, dann steht zum Beispiel bei Inverter Status "20000" als Wert.

      Soll der Shine Wifi Stick NICHT genutzt werden, gelten folgende Verbindungen: TX Leitung vom Inverter an RX Pin3 am RS232 Stecker für TTL Wandler, RX Leitung vom Inverter an TX Pin2 am RS232 Stecker für TTL Wandler, RX vom TTL an RX am WEMOS, TX vom TTL an TX am WEMOS.

      Fertig sieht das dann so aus,

      8174.jpg

      über das Layout lässt sich streiten, aber es funktioniert erstmal.

      Benötige Software:

      -ESP Link auf Github
      -ESPRESSIF Flash Download Tool Download Page
      -Iobroker
      -Modbus Adapter

      Alle Arduino Sketche die ich für Growatt oder Serial to Wifi gefunden hatte, haben keinen Erfolg gebracht. Nur die ESP Link Software hat funktioniert.

      Flash Einstellungen siehe Bild:

      capture_001_26102019_103812.jpg

      Im esp-link Programm "Pin assignment" auf "esp-12" setzen und nach Anleitung auf der Homepage für das heimische Wifi konfigurieren. Diese stellt dann die Daten des Inverters an der IP des WEMOS am Port 23 bereit. Abfragen kann man diese mit dem Modbus Adapter im Iobroker, Einstellungen siehe Bild:

      capture_002_27102019_110643.jpg

      Mit "Poll delay" stellt man die Abfragezeit ein, mit der die Werte aktualisiert werden, sofern kein Stick angeschlossen ist. Wenn ein Stick angeschlossen ist, beinflusst dieser Wert die Häufigkeit der auftretenden Abfragefehler. Da bin ich noch am testen, um die Häufigkeit zu reduzieren.

      Die Eingansregister sind wie abgebildet in dieser Reihenfolge einzutragen. Das gilt insbesondere für die Register "Generated Power", da sonst die Werte nicht korrekt angezeigt werden, auch wenn bei Register 27 und 29 "0 Kwh" steht.

      capture_003_27102019_110719.jpg

      Ist die Hardware korrekt angeschlossen, sollte die Blaue LED des WEMOS blinken und die Konsole (9600 baud und 8N1 einstellen) vom ESP Link (IP vom WEMOS im Browser) folgendes Bild zeigen (hier mit Shine Stick):

      capture_002_27102019_110445.jpg

      QNB3920002 ist die Seriennummer, GEAD1022 und BG.2.0 die Firmware Version.

      Werte im Iobroker:

      capture_004_27102019_122845.jpg

      posted in ioBroker Allgemein
      Wiednitz
      Wiednitz

    Latest posts made by Wiednitz

    • RE: lokale .ics Datei einlesen

      @oliverio

      Das sind für mich alles böhmische Dörfer, ich hab da null Ahnung von was du schreibst 😊

      Am Docker wurde nix geändert, nur Adapter hatte ich aktualisiert. Wann der Abfallkalender im VIS nicht mehr angezeigt wurde, kann ich nicht mehr sagen.

      Es funktioniert ja erstmal wieder mit dem neuen Pfad, bei einem Restore von iobroker muss ich Datei eben selbst wiederherstellen, da nun außerhalb vom Docker gespeichert.

      posted in ioBroker Allgemein
      Wiednitz
      Wiednitz
    • RE: lokale .ics Datei einlesen

      @thomas-braun

      Ich dachte, das Verzeichnis im Docker wäre das home Verzeichnis des iobroker.

      Habe jetzt das Verzeichnis "/share/CACHEDEV1_DATA/homes/admin/iobroker" angelegt und die ics Datei dort gespeichert, jetzt funktioniert es entgegen deinem Rat zumindest mit "/opt/iobroker".

      Zwischenablage01.jpg

      posted in ioBroker Allgemein
      Wiednitz
      Wiednitz
    • lokale .ics Datei einlesen

      Gesundes Neues !

      Monatelang hat das Einlesen meiner .ics Datei für den Abfall im Verzeichnis (Angabe im Adapter) "/opt/iobroker-data2/node_modules/iobroker.admin/www/allestrassenbernsdorf.ics" funktioniert.
      Nach einem Update von iorboker admin vor paar Tagen (?) ist aus dem www Verzeichnis adminWww geworden. Trotz Anpassung des Pfades wird die .ics Datei nicht mehr gefunden. Will die Datei nun aber im Hauptverzechnis von iobroker speichern, da die Datei schon öfters beim update des Admin Adapters gelöscht wurde.

      Iobroker läuft auf qnap im Docker Container.

      Was muss ich im ical Adapter eingeben, damit die lokale Datei im Verzeichniss "/share/CACHEDEV1_DATA/Docker/iobroker-data2/" gefunden wird ? Wenn ich "/opt/iobroker-data2/" eingebe, habe ich keinen Erfolg.

      Besten Dank und Viele Grüße

      posted in ioBroker Allgemein
      Wiednitz
      Wiednitz
    • RE: [GELÖST] HikVision CAM per Script Anweisung steuern (REQUEST)

      @wiednitz

      Ich antworte mir selbst, denn selbst gelöst ! Inhalt im xml Format kommt in den Body !

      posted in Skripten / Logik
      Wiednitz
      Wiednitz
    • RE: [Frage]Skript zur Steuerung ONVIF Kameras

      @glasfaser

      nein alles schon durch. Für PTZ 1 (bei cgi oder xml Aufruf muss dafür 0 eingetragen werden) funktioniert folgendes Script:

      var request = require('request');
      var options = {
        'method': 'PUT',
        'url': 'http://192.168.10.62/PTZ/1/Presets/Goto',
        'headers': {
          'Host': '192.168.10.62',
          'Connection': 'keep-alive',
          'Cache-Control': 'max-age=0',
          'Authorization': 'Basic XXXXXXXXXXXXXX',
          'Accept': '*/*',
          'DNT': '1',
          'X-Requested-With': 'XMLHttpRequest',
          'If-Modified-Since': '0',
          'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36',
          'Content-Type': 'application/x-www-form-urlencoded',
          'Origin': 'http://192.168.10.62',
          'Referer': 'http://192.168.10.62/main.html',
          'Accept-Encoding': 'gzip, deflate',
          'Accept-Language': 'de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7',
          'Cookie': 'userInfo=XXXXXXXXXXXXXXX; stream=1; language=de; commandPort=6060; rtspPort=554'
        },
        form: {
          'Param1': '0'
        }
      };
      request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
      });
      setStateDelayed('javascript.' + instance +  '.scriptEnabled.' + name.slice(10), false, 3*1000);
      

      Url, Cookie und Parameter gilt es eben herauszufinden, ohne Doku ein Rätsel, aber nun gelöst 🤗

      posted in Skripten / Logik
      Wiednitz
      Wiednitz
    • RE: [Frage]Skript zur Steuerung ONVIF Kameras

      @ritschy2000

      const fC = false;
      const logging = false;
      const pfad = 'javascript.' + instance + '.Yucheng.PTZ.';
      const idGotoPreset =   pfad + 'gotoPreset';
      const onvif = require('node-onvif');
      const fs = require('fs');
      
      createState(idGotoPreset, 0, fC, {
         def:  0,
         name: 'Kamera 1 PTZ Preset Wähler',
         desc: 'Preset auswählen (Zahlen von 1 bis X)',
         type: 'number'
      });
      
      // Create an OnvifDevice object
      const device = new onvif.OnvifDevice({
         xaddr: 'http://192.xxx.xx.xx:80/onvif/device_service',
         user : 'xxxxx',
         pass : 'xxxxx'
      });
      
      // https://github.com/futomi/node-onvif#gotopresetparams-callback-method
      function gotoPreset (presetNumber) { // 1,2,3 kommt als ganze Zahl
         if (presetNumber > 0) {
             device.init((error) => {
                 if (error) {
                     log('[ERROR] ' + error.message, 'error');
                     return;
                 } /*else {*/
                 // The OnvifServicePtz object
                 var ptz = device.services.ptz;
                 if (ptz) {
                     //var profile = device.getCurrentProfile(); // debug
                     //log(JSON.stringify(profile, null, '  ')); // debug log
       
                     var params = {
                         'ProfileToken': 'PROFILE_000',
                         'PresetToken' : presetNumber.toString(),
                         'Speed'       : {'x': 1, 'y': 1, 'z': 1}
                     };
       
                     device.services.ptz.gotoPreset(params, (error, result) => {
                         if (error) {
                             log('[ERROR] ' + error.message, 'error');
                         } else {
                             if (logging) log('Preset: ' + JSON.stringify(result.data, null, '  ')); // statt result.['data']
                             log('Camera moved to Preset #' + presetNumber.toString());
                         }
                     });
                 } else {
                     log('[ERROR] Your ONVIF network camera does not support the PTZ service.');
                 }
                 //}
             });
         } else {
             log('Preset für Kamera 1 kein valider Preset-Wert'); // debug log
         }
      }
      
      // zum bereits gespeicherten Preset X fahren (Ganze Zahl, kommt aus VIS, Scenes oder Script)
      on(idGotoPreset, function (obj) {
         if (!obj.state.ack && obj.state.val) {
            gotoPreset(parseInt(obj.state.val,10)); // wird später zu einem String gewandelt
            //setStateDelayed(idGotoPreset, 0, 500); // reset
         }
      });
      // Skriptstart
      //setTimeout(saveImage, 15000);
      // setTimeout(goHome, 1000);
      /*
      setTimeout(function() {
         movePTZ(1,0,0,5); // rechts, 2 sek
      }, 1000);
      */
       
      
      

      Achtung ! Hab den Profile Token an meine Kamera angepasst und verwende anderen Pfad zu den Objekten !

      Habe jetzt für meine Cam endlich die http xml requests herausgefunden mit einem speziellen Programm. Eine API Dokumentation wie für Hikvision ist für meine Yucheng/Esunstar nirgends zu finden. Node-onvif ist irgendwie langsam, XML reagiert sofort, werde das wohl nicht weiter verwenden. Mit XML kann man alle Funktionen aufrufen, die auch die Konfiguration der Cam im Browser bietet.

      posted in Skripten / Logik
      Wiednitz
      Wiednitz
    • RE: [Frage]Skript zur Steuerung ONVIF Kameras

      @wiednitz

      Ich antworte mir mal selbst....

      Nachdem ich alles aus dem Skript außer die gotopreset Funktion gelöscht habe, funktioniert es mit dem Blockly steuere Befehl.

      posted in Skripten / Logik
      Wiednitz
      Wiednitz
    • RE: [Frage]Skript zur Steuerung ONVIF Kameras

      @pix

      Grüsse,

      ich habe das Script auch am Laufen. Funktioniert soweit, wenn ich die States direkt in den Objekten ändere, zum Beispiel gotopreset auf 7, Kamera geht auf Position 7. Wenn ich den State jedoch durch Blockly ändere, Datenpunkt steuern oder aktualisieren, dann wird zwar die Zahl eingetragen, aber die Kamera bewegt sich nicht !?

      Wo ist der Fehler ?

      posted in Skripten / Logik
      Wiednitz
      Wiednitz
    • RE: IPCam Snapshot Anzeige in Widget jqui-mfd Cam/Snapshot

      @alveran

      Wie ist deine snapshot url ?

      Im iframe kann man leider kein Bild skalieren oder hat da jemand eine Lösung ?

      posted in Visualisierung
      Wiednitz
      Wiednitz
    • RE: IPCam Snapshot Anzeige in Widget jqui-mfd Cam/Snapshot

      @arteck
      @Hansi1234

      So Fehler gefunden, hab bei Github ein Issues aufgemacht:

      Hallo,

      bei meiner Snapshot URL "http://192.168.10.62/Snapshot/1/RemoteImageCapture?ImageFormat=2" wird bei Update des Widgets der Teil ab dem Fragezeichen weggelassen.
      Wenn ich also VIS aktualisiere, wird im Widget ein Bild angezeigt, nach der eingestellten Update Zeit wird kein Bild mehr angezeigt.

      Wenn ich ein iframe Widget nehme, wird nach dem Update "/Snapshot/1/RemoteImageCapture -5" als Text angezeigt. Diese "-5" erscheint auch, wenn ich in Chrome "http://192.168.10.62/Snapshot/1/RemoteImageCapture" eingebe:

      <ResponseStatus Version="1.0"> <requestURL>/Snapshot/1/RemoteImageCapture</requestURL> <statusCode>-5</statusCode> </ResponseStatus>

      Kann man das beheben ?

      Scheint aber, das sich niemand mehr um das Projekt da kümmert 🤔

      posted in Visualisierung
      Wiednitz
      Wiednitz
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo