Navigation

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

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    O
    • Profile
    • Following 0
    • Followers 0
    • Topics 5
    • Posts 83
    • Best 9
    • Groups 2

    obakuhl

    @obakuhl

    Developer

    15
    Reputation
    53
    Profile views
    83
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    obakuhl Follow
    Developer Starter

    Best posts made by obakuhl

    • [Vorlage] Zifferngruppe und Ersetzen von Dezimaltrennzeichen

      Hallo zusammen,

      im Zuge der Erstellung von PushBenachrichtigungen für die Familie jeden Morgen, um das Infektionsgeschehen des CoronaVirus (Adapter) im Auge zu behalten habe ich mich etwas mit der Behandlung bzw. Änderungen von Zahlenwerten beschäftigt. Da ich viel mit Blockly mache sind meine ersten Versuche auch mit Blockly-Bausteinen selber gewesen. Relativ schnell habe ich gemerkt, dass ich auf keinen grünen Zweig komme und habe mich etwas mit JavaScript beschäftigt. Als ich dann noch entdeckt habe, dass es möglich ist JavaScript Funktionen in Blockly mit Informationen zu füttern habe ich mich an zwei Funktionen zur Datenaufbereitung gewagt, die sich die Familie gewünscht hat.

      1. Punkt als Trennung bei großen Zahlen
        Beispiele: 5960 → 5.960 | 27 → 27 | 2739417 → 2.739.417

      2. Konvertiere Punkt in Komma
        Beispiele: 27.38 → 27,38 | 938.1 → 938,1

      JavaScript Funktionen man mit folgendem Baustein sehr leicht in Blockly integrieren:

      JavaScriptBausteinReturn.png

      Diesen Baustein einfach nach rechts rausziehen und loslassen. Damit ist der Baustein bereit bearbeitet zu werden.

      Zu 1. - Punkt als Trennung bei großen Zahlen:

      Anstatt "etwas tun" schreiben wir zur Beschreibung der Funktion "Punkt bei Tausendern". Danach erstellen wir eine Variable über das Zahnrad, die der JavaScript Funktion übergeben werden kann und benennen diese von "x" auf "DigitGrouping" um.

      CreateVar.png

      Nach einem Klick auf das Zahnrad verschwindet das PopUpMenü wieder. Wir können nun die eigentliche Funktion einfügen. Dazu gehen wir auf die drei Punkte ganz rechts und fügen folgendes dort ein:

      DigitGrouping = '' + DigitGrouping;
      if (DigitGrouping.length > 3) {
          var mod = DigitGrouping.length % 3;
          var output = (mod > 0 ? (DigitGrouping.substring(0,mod)) : '');
          for (i=0 ; i < Math.floor(DigitGrouping.length / 3); i++) {
              if ((mod == 0) && (i == 0))
              output += DigitGrouping.substring(mod+ 3 * i, mod + 3 * i + 3);
              else
              // hier wird das Trennzeichen festgelegt mit '.'
              output+= '.' + DigitGrouping.substring(mod + 3 * i, mod + 3 * i + 3);
              }
          return (output);
          }
      else return DigitGrouping;
      

      Quelle des Codes

      Nach einem Klick auf Speichern ist der Baustein soweit startklar. Neben der neuen Variable "DigitGrouping" wurde auch ein neuer Baustein unter "Funktionen" erstellt:

      neuerBaustein.png

      Jetzt können wir loslegen und das Skript nutzen. Mit Hilfe des neuen Bausteins können wir z.B. über den LogAusgabeBaustein (debug output) unsere unterteilte Zahl ausgeben lassen. Das Ergebnis im log lautet "284.923".

      DigitGrouping.PNG

      So wird das Skript nur einmal beim Speichern (wenn das Skript bereits ausgeführt wird) ausgeführt. Für zyklische Ausführungen ist natürlich ein Trigger notwendig.

      Zu 2. - Konvertiere Punkt in Komma:

      Wir nutzen wieder den gleichen Baustein wie bei 1. Punkt. Anstatt "etwas tun" schreiben wir zur Beschreibung der Funktion diesmal "Konvertiere Punkt zu Komma". Danach erstellen wir eine Variable über das Zahnrad, die der JavaScript Funktion übergeben werden kann und benennen diese von "x" auf "ConvertString" um.

      CreateVar2.png

      Nach einem Klick auf das Zahnrad verschwindet das PopUpMenü wieder. Wir können nun die eigentliche Funktion einfügen. Dazu gehen wir auf die drei Punkte ganz rechts und fügen folgendes dort ein:

      ConvertString = ConvertString.toString().replace('.', ',');
      
      return ConvertString;
      

      Nach einem Klick auf Speichern ist auch dieser Baustein soweit startklar. Neben der neuen Variable "ConvertString" wurde auch ein neuer Baustein unter "Funktionen" erstellt:

      neuerBaustein2.png

      Jetzt können wir auch hier loslegen und das Skript nutzen. Mit Hilfe des neuen Bausteins können wir z.B. über den LogAusgabeBaustein (debug output) unsere "konvertierte" Zahl ausgeben lassen. Das Ergebnis im log lautet "27,84".

      ConvertString.PNG

      Auch hier wird das Skript so nur einmal beim Speichern (wenn das Skript bereits ausgeführt wird) ausgeführt. Für zyklische Ausführungen ist ein Trigger notwendig.

      Das wars 😁 Da ich nie das gefunden habe, was ich suchte habe ich diesen Thread eröffnet, um anderen Suchenden eine Hilfe zu bieten. Alle Variablennamen können individuell angepasst werden, im Skript muss dann analog auch der Variablenname angepasst werden.

      posted in Blockly
      O
      obakuhl
    • Test Adapter EgiGeoZone2
      Aktuelle Test Version 1.0.6
      Veröffentlichungsdatum 25.06.2024
      Github Link https://github.com/obakuhl/ioBroker.egigeozone2

      Hintergrund

      Nachdem der bisherige Adapter EgiGeoZone von BasGo leider verwaist ist und nicht mehr mit der letzten Version vom js.controller kompatibel ist, musste ein Ersatz her. Da auf npm bluefox nicht als Collaborator eingetragen ist, muss ebenfalls ein neuer Name verwendet werden.

      Beschreibung

      Der Adapter ist für den Empfang von GET-Requests aus der Android-Geofencing-App "EgiGeoZone" geschrieben. Er ist damit in der Lage, Geofence-Ereignisse als http(s)-Anfragen zu empfangen, wenn man mit dem Handy einen definierten Bereich betritt oder verlässt.

      Changelog

      1.0.7

      • Fully implemented responsive design
      • Minor adjustments

      1.0.6

      • Improved object definition
      • New icon

      1.0.5

      • use @iobroker/webserver

      1.0.4

      • Password encryption active, minor code improvements

      1.0.3

      • Updating dependencies

      1.0.2

      • Updating dependencies

      1.0.1

      • Resolved minor issue when leaving location
      • Raised minimum version of adapter-core to 3.1.4 and node >= 18

      1.0.0

      • Refactoring
      • New name (ioBroker.egigeozone -> ioBroker.egigeozone2) necessary due to npm collaborators settings of previous adapter ioBroker.egigeozone

      Bitte gebt Feedback, da ich nicht jeden Usecase abdecken konnte, ob alles in dieser überarbeiteten Version funktioniert.
      Alle bisherigen Features des bisherigen Adapters sollten auch von dieser Version abgedeckt sein.
      Falls es Probleme mit der Einrichtung am Handy gibt, einfach bescheid geben, das Tutorial auf der Website ist aber hilfreich.

      Feature Requests bitte als Issue in deutsch oder englisch auf Github erstellen.

      posted in Tester
      O
      obakuhl
    • RE: [Gelöst] Osram Smart+ Mini Switch

      @edonisXP
      wechsle in das passende Verzeichnis:

      cd /opt/iobroker/node_modules/iobroker.zigbee/lib
      

      Danach kannst du mit einem passenden Editor (hier nano) die devstates.js (seit kurzem nur noch states.js) öffnen:

      nano states.js
      

      Danach runterscrollen (mit der Pfeiltaste nach unten) bis zu zum Abschnitt des Osram Switch mini kommst und den Code anpassen.

      Mit Adapterversion 1.0.3 und mit Firmwareversion 20190608 (zStack12) funktioniert damit aber nur mit der mittleren Taste (circle) die hold Funktion, bei mir zumindest. Bei den Pfeiltasten wird nur ein kurzer Tastendruck registriert, dafür funktioniert dieser kurze Tastendruck bei der mittleren Taste nicht.

      Da die Variablennamen (circle_press → circle_click, on_hold → up_hold, off_hold → down_hold) im Zigbee Herdsman-converter geändert worden sind muss der Code (basierend auf dem was @ReverZ erarbeitet hat) in der states.js wie folgt heißen:

      // osram switch mini
         switch_circle: {
              id: 'circle',
              prop: 'action',
              name: 'Circle state',
              icon: undefined,
              role: 'switch',
              write: false,
              read: true,
              type: 'string',
              getter: payload => (payload.action === 'circle_click') ? 'press' : (payload.action === 'circle_hold') ? 'hold' : undefined,
          },
          switch_state: {
              id: 'state',
              prop: 'action',
              name: 'Switch state',
              icon: undefined,
              role: 'switch',
              write: false,
              read: true,
              type: 'string',
              getter: payload => (payload.action === 'up') ? 'up' : (payload.action === 'down') ? 'down' : (payload.action === 'circle_click') ? 'circle' : undefined,
          },
          switch_hold: {
              id: 'hold',
              prop: 'action',
              name: 'Switch state',
              icon: undefined,
              role: 'switch',
              write: false,
              read: true,
              type: 'string',
              getter: payload => (payload.action === 'up_hold') ? 'up' : (payload.action === 'down_hold') ? 'down' : (payload.action === 'circle_hold') ? 'circle':  undefined,                
          },        
      

      Es gibt auch noch weitere Zustände für den Mini switch im Converter (fromZigbee.js) u.a. circle_release, up_release, down_release, long_middle. Hier müsste man noch untersuchen, inwieweit sich die Zustandsänderungen noch in die states.js einbauen lassen.

      posted in Hardware
      O
      obakuhl
    • RE: [Vorlage] Zifferngruppe und Ersetzen von Dezimaltrennzeichen

      @pamf In der Tat wird das nicht berücksichtigt. Du kannst folgendes Skript statt dem bestehenden probieren:

      DigitGrouping = Intl.NumberFormat('de-DE').format(DigitGrouping);
      
      DigitGrouping = DigitGrouping.toString().replace('.', 'x');
      DigitGrouping = DigitGrouping.toString().replace(',', '.');
      DigitGrouping = DigitGrouping.toString().replace('x', ',');
      
      return DigitGrouping;
      

      Folgendes wird gemacht: Der Variable DigitGrouping wurde eine Zahl zugewiesen. Diese wird in das de-DE Format gebracht. Bei mir führt dies aber noch nicht zum gewünschten Format (obwohl in den ioBrokerEinstellungen "Float Teiler Zeichen" auf Komma steht. So wird z.B. nur mit der ersten Zeile im Skript aus 1234.45 -> 1,234.45. Mit der Funktion 'toString' in den Zeilen 2, 3, 4 werden die ',' und '.' ausgetauscht. So wird aus 1234.45 -> 1.234,45. Falls bei dir jetzt doch mit dem ganzen Skript aus 1234.45 -> 1,234.45 werden sollte dann musst du die drei Zeilen

      DigitGrouping = DigitGrouping.toString().replace('.', 'x');
      DigitGrouping = DigitGrouping.toString().replace(',', '.');
      DigitGrouping = DigitGrouping.toString().replace('x', ',');
      

      löschen 😁

      posted in Blockly
      O
      obakuhl
    • RE: Test Coronavirus Statistics for ioBroker

      @jlssmt said in Test Coronavirus Statistics for ioBroker:

      Welche Werte nutzt denn der Adapter? Die Daten der JHU?

      bf43980d-bca7-4d37-9889-74f454e1321a-grafik.png

      Und diese "herokuapp" nimmt die Daten von https://www.worldometers.info/coronavirus/

      posted in Tester
      O
      obakuhl
    • RE: Gelöst [Blockly] Punkt durch Komma ersetzen

      Auch wenn dieser Beitrag schon etwas älter ist, auf der Suche wie man mit Blockly einen Punkt durch ein Komma ersetzen kann bin ich immer wieder bei diesem Beitrag gelandet. Es kommt aber jetzt nicht direkt heraus, wie man jetzt wirklich mit Blockly dieses Vorhaben umsetzt, deswegen hier mein HowTo für diejenigen, die hier auch landen 🤓

      posted in Skripten / Logik
      O
      obakuhl
    • RE: [Gelöst] Osram Smart+ Mini Switch

      Änderung wurde aufgenommen. Zusätzlich wird es auch einen neuen state "release" geben. Damit ist es nun möglich auf das Ende des "Hold-Event" zu triggern.

      posted in Hardware
      O
      obakuhl
    • RE: Test Adapter EgiGeoZone2

      1.0.7 jetzt in latest verfügbar.

      posted in Tester
      O
      obakuhl
    • RE: [Gelöst] Osram Smart+ Mini Switch

      @kay-poslovsky ich empfehle auch die Konsole, mit der GUI kenne ich mich tatsächlich gar nicht aus 😁

      Ins Verzeichnis wechseln:

      cd /opt/iobroker/node_modules/iobroker.zigbee/lib
      

      Mit einem Editor (hier nano) die Datei öffnen:

      nano devices.js
      

      In der Datei nach unten scrollen (mit der Pfeiltaste nach unten) oder direkt mit Strg+W suchen (AC0251100NJ), dann sollte man an der passenden Stelle sein und den Wert anpassen. Dann Strg + X (zum schließen der Datei) und dann y (oder falls deutsch evtl. j), damit die Datei überschrieben wird. Adapter neustarten und dann sollte es klappen 😎
      Falls es weiterhin Berechtigungsprobleme gibt vor nano ein sudo schreiben:

      sudo nano devices.js
      

      Falls es nicht klappt, einfach nochmal melden 😁

      posted in Hardware
      O
      obakuhl

    Latest posts made by obakuhl

    • RE: Test Adapter EgiGeoZone2

      1.0.7 jetzt in stable verfügbar.

      posted in Tester
      O
      obakuhl
    • RE: Test Adapter EgiGeoZone2

      1.0.7 jetzt in latest verfügbar.

      posted in Tester
      O
      obakuhl
    • RE: Test Adapter EgiGeoZone2

      @michihorn
      Ich bin mir nicht sicher, was du mit irgendwo meinst. Bei 192.168.178.162 handelt es sich um eine lokale IP, deswegen kannst du auch nur in deinem lokalen Netzwerk die aktuelle Position über die App setzen. Um es von außerhalb deines Netzwerks zu machen musst du z.B. über ein VPN zu deinem lokalen Netzwerk verbunden sein.

      In der App selbst ist es auch wichtig, dass du http:// vor deine IP Adresse schreibst.

      Über Browser wirst du so keine Position setzen können, da die URL eigentlich deutlich länger ist (die App übernimmt das) und weitere Parameter an den ioBroker übergeben werden.

      posted in Tester
      O
      obakuhl
    • RE: Test Adapter EgiGeoZone2

      1.0.6 jetzt in stable verfügbar.

      posted in Tester
      O
      obakuhl
    • RE: Test Adapter EgiGeoZone2

      1.0.6 jetzt in latest verfügbar.

      posted in Tester
      O
      obakuhl
    • Test Adapter EgiGeoZone2
      Aktuelle Test Version 1.0.6
      Veröffentlichungsdatum 25.06.2024
      Github Link https://github.com/obakuhl/ioBroker.egigeozone2

      Hintergrund

      Nachdem der bisherige Adapter EgiGeoZone von BasGo leider verwaist ist und nicht mehr mit der letzten Version vom js.controller kompatibel ist, musste ein Ersatz her. Da auf npm bluefox nicht als Collaborator eingetragen ist, muss ebenfalls ein neuer Name verwendet werden.

      Beschreibung

      Der Adapter ist für den Empfang von GET-Requests aus der Android-Geofencing-App "EgiGeoZone" geschrieben. Er ist damit in der Lage, Geofence-Ereignisse als http(s)-Anfragen zu empfangen, wenn man mit dem Handy einen definierten Bereich betritt oder verlässt.

      Changelog

      1.0.7

      • Fully implemented responsive design
      • Minor adjustments

      1.0.6

      • Improved object definition
      • New icon

      1.0.5

      • use @iobroker/webserver

      1.0.4

      • Password encryption active, minor code improvements

      1.0.3

      • Updating dependencies

      1.0.2

      • Updating dependencies

      1.0.1

      • Resolved minor issue when leaving location
      • Raised minimum version of adapter-core to 3.1.4 and node >= 18

      1.0.0

      • Refactoring
      • New name (ioBroker.egigeozone -> ioBroker.egigeozone2) necessary due to npm collaborators settings of previous adapter ioBroker.egigeozone

      Bitte gebt Feedback, da ich nicht jeden Usecase abdecken konnte, ob alles in dieser überarbeiteten Version funktioniert.
      Alle bisherigen Features des bisherigen Adapters sollten auch von dieser Version abgedeckt sein.
      Falls es Probleme mit der Einrichtung am Handy gibt, einfach bescheid geben, das Tutorial auf der Website ist aber hilfreich.

      Feature Requests bitte als Issue in deutsch oder englisch auf Github erstellen.

      posted in Tester
      O
      obakuhl
    • RE: js-controller 5.0.x jetzt für alle User im STABLE!

      @mcm57 Danke, dass du dir so schnell einen Überblick verschafft hast.
      Ich stehe auf jeden Fall für Tests bereits, egal ob du Zeit für die Anpassungen/Neuentwicklung findest, jemand anderes oder eine Mischung aus beidem 😁

      posted in ioBroker Allgemein
      O
      obakuhl
    • RE: js-controller 5.0.x jetzt für alle User im STABLE!

      Ich möchte nur darauf aufmerksam machen, dass der Adapter Egigeozone nicht mit dem js-controller 5.x. kompatibel ist. Hintergrund ist eine inkompatible adapter-core Version.

      posted in ioBroker Allgemein
      O
      obakuhl
    • RE: [Gelöst] Osram Smart+ Mini Switch

      @efge Was genau "funktioniert" dann wieder? Werden nur die Werte der Objekte "circle_click", "circle_hold", "down", "down_hold", "up", "up_hold" beschrieben oder alle?
      Durch das Löschen von "AC0251600NJ" in der devices.js kann dieser CodeBlog nicht angesprochen werden, weil im zigbee-herdsman-converters die Bezeichnung "AC0251100NJ/AC0251600NJ/AC0251700NJ" lautet.

      @Asgothian Durch das Aufnehmen in die "Ausschlussliste" im Zigbee Adapter wird die states.js umgangen oder?

      posted in Hardware
      O
      obakuhl
    • RE: [Gelöst] Osram Smart+ Mini Switch

      @efge Danke für den Hinweis 😁 Das habe ich tatsächlich übersehen, da ich die Werte dieser Objekte nicht nutze. Konnte das Ganze aber nachstellen und werde es anpassen. Damit werden dann nicht nur die "states", sondern auch das "boolean toggeln" funktionieren. PR werde ich gleich erstellen. Du kannst deinen Workaround solange nutzen, bis die Änderung es in eine stable schafft.

      Edit: PR auf GitHub

      posted in Hardware
      O
      obakuhl
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo