Navigation

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

    NEWS

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Profile
    • Following 1
    • Followers 1
    • Topics 59
    • Posts 586
    • Best 19
    • Groups 1

    Atifan

    @Atifan

    20
    Reputation
    130
    Profile views
    586
    Posts
    1
    Followers
    1
    Following
    Joined Last Online

    Atifan Follow
    Pro

    Best posts made by Atifan

    • RE: Wasserzähler - Selfmade

      Ah super, Danke!
      Ja hier ist mein Gehäuse inkl. Halterung.
      Besteht aus 2 Teilen und kann z.B. mit doppelseitigem Montageband zusammengeklebt werden.
      Die Linse der CAM hat genau einen Abstand von 8cm von der Wand, wo der Halter befestigt ist.
      Der Abstand kann aber auch noch einige cm vergrößert werden.
      Ist halt auf meine Örtlichkeiten abgestimmt, sollte aber bei den meisten nutzbar sein.
      Ich habe die CAM dann einfach mit Isolierband am Halter fixiert.
      Es ist eigentlich noch ein Prototyp, aber er erfüllt so auch seinen Zweck, daher habe ich es einfach so gelassen 🐕
      Man muss den Halter eigentlich nur so einstellen, dass die Linse möglichst genau über der Mitte des Zählers sitzt.
      Dann den Halter in der Höhe über der Wasseruhr im optimalen Abstand befestigen.
      Bei mir waren das genau 10cm von der Linse der CAM zur Glasoberfläche der Wasseruhr.
      Dafür muss ggf. die Linse justiert werden, damit das Bild scharf wird.

      ac41ebe2-f227-44b7-9d93-e195c3ed1312-image.png d58cddea-b0e1-4f1d-9165-680cfed9af7d-image.png

      Hier die 3D-Dateien zum Drucken:
      Kamerahalter.stl
      Wandhalter.stl
      Werkzeug_Focus_Linse_einstellen.stl

      posted in Hardware
      Atifan
      Atifan
    • Avatar/Profilbild im IoBroker ändern?

      Hi.
      Habe bei einem Youtube Video gesehn, dass jemand in seinem IoBroker einen anderen Avatar bzw. Profilbild angezeigt hatte, also kann man den ja ändern. Ich finde aber nirgendwo eine Einstellung wo ich das machen kann. Kann mir jemand sagen wie das geht? 🙂
      Danke
      23218a8d-ad2d-4f5e-b5ca-c64eda245dce-image.png

      posted in ioBroker Allgemein
      Atifan
      Atifan
    • RE: Blockly - bestimmter Zeitraum der Ausführung

      Ich glaub ich bin gerade selber darauf gekommen.
      So sollte es denke ich funktionieren oder?

      962c0ccc-e0fc-4581-98f4-a9c542799188-image.png

      posted in Blockly
      Atifan
      Atifan
    • RE: NodeRed Version 1.16.2 Bug

      Hi, es liegt definitiv am NodeRed Update auf Version 1.16.2
      Habe Version 1.13.0 wieder installiert und da funktioniert alles wieder.

      posted in Node-Red
      Atifan
      Atifan
    • RE: [Major Update] SourceAnalytix v0.4.7-beta.0 released !

      Hi, kann man schon sagen wann ca. die Tageswerte wieder implementiert werden (von Mo-So) ?

      posted in Tester
      Atifan
      Atifan
    • RE: Wasserzähler - Selfmade

      Hallo, bin sehr interessiert daran so einen Wasserzähler Sensor nachzubauen und hätte daher einige Fragen.

      1. Geht das mit meinem analogen Wasserzähler der Firma Elster (siehe Bild)
      2. ich habe zufällig ein ESP32CAM hier, bekomme die Kamera aber nicht gedreht bzw. fokussiert. Hat da jemand einen Tipp wie man das einfach hin bekommt oder evtl. einen Tipp für ein Kamera die ich mir bestellen könnte bei der es einfach geht. Ich habe keine originale OV2640 drauf sondern eine XRZ00D1
      3. Gibt es irgendwo eine detaillierte Anleitung wie man vorgehen muss bzw. wie man den Server einrichtet und konfiguriert? Ich würde gerne den Server auf einem Intel NUC laufen lassen.

      Schon mal Danke vorab.

      9cb944dc-13b8-43cf-b710-db9f418bc2af-image.png

      posted in Hardware
      Atifan
      Atifan
    • RE: Script wird nicht ausgeführt

      @bassface sagte in Script wird nicht ausgeführt:

      @atifan
      Also werden Skripte ausgeführt, allerdings nicht zur konfigurierten Zeit?
      Stimmt den deine Systemzeit?

      Per SSH:

      date
      

      Ja war UTC eingestellt, Scipt funktionierte aber 2h später als eingestellt, daher dachte ich natürlich beim Prüfen, dass es nicht funktioniert, weil es ja erst 2h später getriggert wurde.

      Habe jetzt die Zeit umgestellt und es geht. Danke!

      console -> timedatectl set-timezone Europe/Berlin

      posted in Blockly
      Atifan
      Atifan
    • RE: NodeRed Version 1.16.2 Bug

      OK habe es mal auf Github gepostet.
      https://github.com/ioBroker/ioBroker.node-red/issues/87

      atifan created this issue in ioBroker/ioBroker.node-red

      closed NodeRed 1.16.2 -> Alexa devices not working #87

      posted in Node-Red
      Atifan
      Atifan
    • RE: Wasserzähler - Selfmade

      Ich hatte mir ein 3d-Gehäuse erstellt und dort ein kleines Loch vorgesehen, wodurch die LED dann beleuchten kann. Das Loch war aber nur so groß wie die LED selbst, so dass die Ausleuchtung schlecht war, da nur in einem kleinen Winkel ausgeleuchtet wurde. Habe das Loch jetzt größer gemacht, so dass die LED in einem größeren Winkel strahlen kann.
      Der Abstand von dem Objektiv bis zur Wasseruhr ist ziemlich genau 10cm.

      posted in Hardware
      Atifan
      Atifan
    • RE: LovelaceUI -> wie Kamerabild auf Dashboard? (gelöst)

      SO habe es endlich hinbekommen, mit go2rtc.
      Vielen Dank an alle!
      Vorallem an @David-G für den Tipp mit go2rtc.

      posted in Visualisierung
      Atifan
      Atifan

    Latest posts made by Atifan

    • RE: Skript - automatisch Eintrag im Google Kalender machen

      @dirkhe AH nice ok danke schaue es mir mal an 🙂

      posted in Skripten / Logik
      Atifan
      Atifan
    • RE: Skript - automatisch Eintrag im Google Kalender machen

      Hi, ich hab mal ChatGPT gefragt und das hat mir ein Script erstellt, das ist echt mal Megagenial 🙂
      Allerdings geht schreiben nur in einen Nextcloud Kalender und nicht in den Google Kalender.
      Um in den Google Kalender zu schreiben benötigt man wohl einen Google Cloud Account und Zugriff auf die Google API, was aber kostenpflichtig ist.
      Falls einer das Script möchte, hier ist es.
      Es überwacht den Datenpunkt "0_userdata.0.Button" vom Typ Boolean. Wenn dieser "true" wird, wird ein Eintrag im Kalender gemacht.
      Es wird auch geprüft ob bereits ein Eintrag gemacht wurde, wenn das der Fall ist wird kein zweiter Eintrag gemacht.
      Im Script müssen angepasst werden: calendarUrl, username, password. Und der Eintrag den man machen möchte.
      In meinem Beispiel ist das der Text "Medikamente heute eingenommen".

      const http = require('http');
      const https = require('https');
      const url = require('url');
      
      const calendarUrl = '<ANPASSEN>';
      const username    = '<ANPASSEN>';
      const password    = '<ANPASSEN>';
      const CREATE_ON_CHECK_ERROR = false;
      
      function pad(n){ return n < 10 ? '0' + n : '' + n; }
      function caldavDateUTC(d){
          return d.getUTCFullYear().toString() +
              pad(d.getUTCMonth() + 1) +
              pad(d.getUTCDate()) + 'T' +
              pad(d.getUTCHours()) +
              pad(d.getUTCMinutes()) +
              pad(d.getUTCSeconds()) + 'Z';
      }
      function localDateNoZ(d){
          return d.getFullYear().toString() +
              pad(d.getMonth() + 1) +
              pad(d.getDate()) + 'T' +
              pad(d.getHours()) +
              pad(d.getMinutes()) +
              pad(d.getSeconds());
      }
      
      // Allgemeine HTTP-Request-Funktion
      function httpRequest(options, body, callback) {
          const parsedUrl = url.parse(options.url);
          const lib = parsedUrl.protocol === 'https:' ? https : http;
      
          const auth = Buffer.from(options.auth || '').toString('base64');
      
          const reqOptions = {
              hostname: parsedUrl.hostname,
              port: parsedUrl.port || (parsedUrl.protocol === 'https:' ? 443 : 80),
              path: parsedUrl.path,
              method: options.method || 'GET',
              headers: options.headers || {}
          };
      
          if (auth) reqOptions.headers['Authorization'] = 'Basic ' + auth;
      
          const req = lib.request(reqOptions, (res) => {
              let data = '';
              res.on('data', (chunk) => { data += chunk; });
              res.on('end', () => { callback(null, res, data); });
          });
      
          req.on('error', (err) => { callback(err); });
      
          if (body) req.write(body);
          req.end();
      }
      
      // Prüfen, ob heute schon ein Termin existiert
      function checkEventToday(callback) {
          const now = new Date();
          const localStart = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0,0,0);
          const localEnd   = new Date(now.getFullYear(), now.getMonth(), now.getDate()+1, 0,0,0);
      
          const timeMin = caldavDateUTC(localStart);
          const timeMax = caldavDateUTC(localEnd);
      
          const xml = '<?xml version="1.0" encoding="utf-8"?>' +
      '<C:calendar-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">' +
      '  <D:prop>' +
      '    <D:getetag/>' +
      '    <C:calendar-data/>' +
      '  </D:prop>' +
      '  <C:filter>' +
      '    <C:comp-filter name="VCALENDAR">' +
      '      <C:comp-filter name="VEVENT">' +
      '        <C:time-range start="' + timeMin + '" end="' + timeMax + '"/>' +
      '      </C:comp-filter>' +
      '    </C:comp-filter>' +
      '  </C:filter>' +
      '</C:calendar-query>';
      
          httpRequest({
              url: calendarUrl,
              method: 'REPORT',
              auth: username + ':' + password,
              headers: { 'Content-Type': 'application/xml', 'Depth': '1' }
          }, xml, function(error, response, body) {
              if (error) {
                  log("❌ Fehler beim Prüfen der Events: " + error, 'error');
                  return callback(null, CREATE_ON_CHECK_ERROR ? false : true);
              }
      
              const status = response ? response.statusCode : 'no-response';
              log("DEBUG: REPORT Status: " + status, 'debug');
      
              if (status < 200 || status >= 300) {
                  log("⚠️ Ungewöhnlicher REPORT-Status: " + status, 'warn');
                  return callback(null, CREATE_ON_CHECK_ERROR ? false : true);
              }
      
              let caldata = body.toString().replace(/\r\n[ \t]/g, '').replace(/\r\n/g, '\n');
              const summaryRegex = /(^|\n)SUMMARY(?:;[^:]*)?:\s*Medikamente heute eingenommen(\n|$)/i;
              const exists = summaryRegex.test(caldata);
      
              callback(null, exists);
          });
      }
      
      // Event erstellen
      function createEvent() {
          const now = new Date();
          const uid = Date.now() + '@iobroker';
      
          const startLocal = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 6,0,0);
          const endLocal   = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 20,0,0);
      
          const dtstamp = caldavDateUTC(new Date());
          const dtStartLocal = localDateNoZ(startLocal);
          const dtEndLocal   = localDateNoZ(endLocal);
      
          const ics =
      "BEGIN:VCALENDAR\n" +
      "VERSION:2.0\n" +
      "PRODID:-//ioBroker//DE\n" +
      "BEGIN:VEVENT\n" +
      "UID:" + uid + "\n" +
      "DTSTAMP:" + dtstamp + "\n" +
      "DTSTART;TZID=Europe/Berlin:" + dtStartLocal + "\n" +
      "DTEND;TZID=Europe/Berlin:" + dtEndLocal + "\n" +
      "SUMMARY:Medikamente heute eingenommen\n" +
      "END:VEVENT\n" +
      "END:VCALENDAR";
      
          const filename = encodeURIComponent("medikamente-" + uid + ".ics");
          const eventUrl = calendarUrl + filename;
      
          httpRequest({
              url: eventUrl,
              method: 'PUT',
              auth: username + ':' + password,
              headers: { 'Content-Type': 'text/calendar; charset=utf-8' }
          }, ics, function(error, response) {
              if (error) {
                  log("❌ Fehler beim Erstellen des Events: " + error, 'error');
                  return;
              }
              const status = response ? response.statusCode : 'no-response';
              log("DEBUG: PUT Status: " + status, 'debug');
              if (status >= 200 && status < 300) {
                  log("✅ Termin erfolgreich erstellt", 'info');
              } else {
                  log("⚠️ Unerwartete Antwort beim Erstellen: " + status, 'warn');
              }
          });
      }
      
      // Button überwachen
      on({id: '0_userdata.0.Button', change: 'any'}, function(obj) {
          if (obj.state.val === true) {
              checkEventToday(function(err, exists) {
                  if (exists) {
                      log("ℹ️ Heute existiert bereits ein 'Medikamente heute eingenommen'-Termin — kein neuer Eintrag.", 'info');
                  } else {
                      createEvent();
                  }
              });
          }
      });
      
      
      posted in Skripten / Logik
      Atifan
      Atifan
    • Skript - automatisch Eintrag im Google Kalender machen

      Hi Leute ich möchte folgendes mit Hilfe von Blockly oder NodeRed programmieren, weiss aber nicht genau wie ich das umsetzen soll.
      Evtl. hat hier einer ja ne Idee wie man das machen könnte.

      Ich möchte einen Xiaomi Zigbee Button dafür nutzen, dass wenn dieser einmal gedrückt wird, automatisch ein Eintrag in einem Google-Kalender gemacht wird.

      Ich drücke also am Tag einmal oder auch mehrmals den Button -> im IoBroker gibts den Datenpunkt "Button gedrückt ja" -> dieser Datenpunkt wird in dem Moment "true".
      Wenn das der Fall ist soll Iobroker automatisch in den Google Kalender für den "heutigen Tag" einen Eintrag machen "Button wurde heute gedrückt".

      Das ganze soll als Erinnerungsstütze dienen, so kann man immer in den Kalender schauen ob man heute schon das eine gemacht hat oder nicht.

      Hat einer ne Idee wie ich das Umsetzen kann? Ich würde so vorgehen, über Blockly einen Datenpunkt überwachen ("Button gedrückt"), und wenn der sich ändert mache "xxxx -> Daten in Kalender schreiben". Aber da weiss ich nicht wie ich das umsetzen soll.

      Habe z.B. den Adapter "ICal Kalender" installiert, falls man den dafür nutzen könnte.
      Bin für Tipps dankebar 🙂

      Grüße
      atifan

      posted in Skripten / Logik
      Atifan
      Atifan
    • RE: LovelaceUI -> wie Kamerabild auf Dashboard? (gelöst)

      @martinp Hi.
      Also ich habe go2rtc über ein Proxmox Helper Script installiert, nach Anleitung von diesem Youtube Video: https://www.youtube.com/watch?v=CeD6V9-6ot4
      Danach habe ich den RTSP-Stream einfach in go2rtx eingefügt, und konnte dann die Stream-URL die funktioniert kopieren.
      Diese Stream URL habe ich dann im IoBroker in einem Datenpunkt hinterlegt und den Datenpunkt über das Zahnrädchen als Lovelace Endität Kamera eingerichtet.

      posted in Visualisierung
      Atifan
      Atifan
    • RE: LovelaceUI -> wie Kamerabild auf Dashboard? (gelöst)

      SO habe es endlich hinbekommen, mit go2rtc.
      Vielen Dank an alle!
      Vorallem an @David-G für den Tipp mit go2rtc.

      posted in Visualisierung
      Atifan
      Atifan
    • RE: LovelaceUI -> wie Kamerabild auf Dashboard? (gelöst)

      @david-g Versuche es über go2rtc, bin das gerade am installieren.

      posted in Visualisierung
      Atifan
      Atifan
    • RE: LovelaceUI -> wie Kamerabild auf Dashboard? (gelöst)

      @david-g genauso hab ich es gemacht, aber funktioniert nicht.

      d155b9a0-ee55-4ea3-9a4b-d7752b072166-image.png

      c8b5de3e-c95b-4269-b30b-836a4765cc16-image.png

      2681250f-38f9-481c-8cba-7d24d73e6f4f-image.png

      06c40de6-6d79-475c-a881-d9be07ee5daf-image.png

      posted in Visualisierung
      Atifan
      Atifan
    • RE: LovelaceUI -> wie Kamerabild auf Dashboard? (gelöst)

      @wendy2702 Hallo.
      Ich habe eine Reolink RLC-520A.

      Habe eine Snapshot Url integriert. Das Bild wird auch angezeigt, aber leider nicht automatisch aktualisiert.

      http://192.168.178.13/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=952700014VWK6CKG&user=USER&password=PASSWORT&width=2560&height=1920

      posted in Visualisierung
      Atifan
      Atifan
    • LovelaceUI -> wie Kamerabild auf Dashboard? (gelöst)

      Hallo liebe Community,
      bei mir läuft IoBroker mit Lovelace UI und einem kleinen Dashboard.
      Habe es hinbekommen, dass ein Bild von meiner Kamera angezeigt wird.
      Leider aktualisiert dieses sich aber nicht von selbst, sondern nur wenn man mit F5 den Browser aktualisiert.

      Wie kann ich meine Kamera so einbinden, dass ein Video statt einem Bild angezeigt wird?
      Finde dazu keine Lösung, aber das kann doch nicht so schwer sein oder?

      a4fadd48-c054-409b-8e05-7f5e0a79a942-image.png

      Aktuell habe ich die Kamera über eine Bildübersichtkarte integriert.
      cbca27b7-86e1-4c6c-992e-7dd58ac43e78-image.png

      Anscheinend ist es ja nicht so leicht einen Videostream zu integrieren.
      Ich habe irgendwo gelesen, dass man es so machen könnte, dass man über die Bild-Karte ein Bild einbindet und dieses jede Sekunde aktualisiert, d.h. man müsste vom Videosteam irgendwie jede Sekunde ein Bild machen, irgendwo speichern und das in Lovelace UI einbinden. Wie man das umsetzen könnte weiss ich aber nicht und ob es funktioniert auch nicht.

      posted in Visualisierung
      Atifan
      Atifan
    • RE: Adapter über Blockly starten/stoppen

      @asgothian Naja Iobroker wird wahrscheinlich unsauber gestoppt, weil Proxmox den LXC einfach runterfährt.
      @Meister-Mopper : Ja wäre ne Möglichkeit den über Snapshot statt Stopmodus. Werde das mal so einstellen.

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