Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Geofency 0.2.0: Message-Support und Authentication Fix

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    Geofency 0.2.0: Message-Support und Authentication Fix

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

      Hey All,

      es gibt eine neue geofency Version 0.2.0 auf Github zum testen.

      Einmal ist die Username/Passwort-Authentifizierung jetzt funktionsfähig (hat noch nicht funktioniert 😞 )

      Weiterhin kann der Adapter nun anstelle eines eigenem Servers über Messages aus JavaScript seine Daten empfangen …

      Bei letzterem Fragt Ihr Euch vielleicht warum, aber hier kommt jetzt ein neues Cloud-Feature ins Spiel:

      Mit der neuesten Cloud-Version (auch GitHub) werden Custom-Service-Endpunkte unterstützt. Damit kann man an https://iobroker.net/service/custom_<ei ... loud-Token> beliebige Daten POSTen ... Und das gesendete landet sicher als Datenpunkt unter cloud.0.services. Man muss den Namen noch in der Cloud-Konfig in die Whitelist eintragen.

      Es ist ja immer grenzwertig Adapter ins Internet zu stellen und bei Geofency gab es auch eine Warnung, aber über den Weg des Cloud-Adapters ist das wieder sicher.

      Also: In Geofency die entsprechende Cloud-URL als Webhook-Ziel eintragen und dann braucht man noch ein kleines JavaScript was grob so aussieht:

      on({id: "cloud.0.services.custom_geofency_device1", change: 'any'}, function(obj) {
          try {
              data = JSON.parse(obj.state.val);
          }
          catch (err) {
              data = null;
          }
          if (! data) {
              log('ERROR: Geofency data invalid: ' + data, 'error');
              return;
          }
          var user = 'Device1-User';
          sendTo('geofency.0', {'user': user, 'data': data});
      });
      

      Habe das bei mir jetzt im Testlauf laufen … klappt bisher super

      Bitte weitere Tester melden 🙂

      Ingo

      1 Reply Last reply Reply Quote 0
      • S
        simpixo last edited by

        Werde das mal morgen Abend oder am Wochenende testen! Hört sich mal nicht schlecht an [emoji1303]

        Gruß

        Adrian

        Gesendet von iPhone mit Tapatalk Pro

        1 Reply Last reply Reply Quote 0
        • apollon77
          apollon77 last edited by

          Jemand getestet?

          1 Reply Last reply Reply Quote 0
          • M
            Marty56 last edited by

            2722_bildschirmfoto_2017-07-01_um_17.53.00.png ich sehe die Version nicht, wenn ich über die WebUi und mit dem Button Github danach suche.

            1 Reply Last reply Reply Quote 0
            • apollon77
              apollon77 last edited by

              Interessant … Nimm https://github.com/ioBroker/ioBroker.geofency als URL für "Custom" Install

              1 Reply Last reply Reply Quote 0
              • M
                Marty56 last edited by

                Konnte die Version installieren.

                In Adapter Tab wird 2.0 für Geofency angezeigt.

                Falls allerdings fehlte, ist der Dialog zum Einrichten und es wird auch keine Instanz erzeugt.

                host.localhost	2017-07-02 06:13:26.347	info	Update repository "default" under "http://download.iobroker.net/sources-dist.json"
                iobroker	2017-07-02 06:13:25.711	info	exit 0
                iobroker	2017-07-02 06:13:25.492	info	upload [0] geofency.admin /opt/iobroker/node_modules/iobroker.geofency/admin/geofency.png geofency.png image/png
                iobroker	2017-07-02 06:13:25.367	info	upload [1] geofency.admin /opt/iobroker/node_modules/iobroker.geofency/admin/index.html index.html text/html
                iobroker	2017-07-02 06:13:25.339	info	got /opt/iobroker/node_modules/iobroker.geofency/admin
                iobroker	2017-07-02 06:13:25.229	info	optional SKIPPING OPTIONAL DEPENDENCY: xpc-connection@~0.1.4 (node_modules/noble/node_modules/xpc-connection):npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for xpc-connection@0.1
                iobroker	2017-07-02 06:13:25.227	info	
                iobroker	2017-07-02 06:13:25.217	info	npm WARN
                iobroker	2017-07-02 06:13:25.217	info	WARN optional SKIPPING OPTIONAL DEPENDENCY: xpc-connection@~0.1.4 (node_modules/iobroker.radar/node_modules/noble/node_modules/xpc-connection):npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupport
                iobroker	2017-07-02 06:13:25.214	info	npm
                iobroker	2017-07-02 06:12:02.320	info	npm install https://github.com/ioBroker/ioBroker.geofency/tarball/master --production --prefix "/opt/iobroker" (System call)
                iobroker	2017-07-02 06:12:01.909	info	install https://github.com/ioBroker/ioBroker.geofency/tarball/master
                iobroker	2017-07-02 06:12:00.518	info	url "https://github.com/ioBroker/ioBroker.geofency"
                
                1 Reply Last reply Reply Quote 0
                • apollon77
                  apollon77 last edited by

                  Dann Klick mal unter Adapter auf das Plus in de Zeile. Bei installs von GitHub werden keine Instanzen angelegt.

                  1 Reply Last reply Reply Quote 0
                  • S
                    simpixo last edited by

                    Also ich habe auch aktualisiert, aber seitdem hat das ganze nicht mehr funktioniert [emoji52]

                    Habe folgende Fehler im Log gehabt! Die hinterlegten Daten waren aber richtig!!!

                    geofency.0	2017-07-02 11:38:12.173	warn	Authorization Header missing but user/pass defined
                    geofency.0	2017-07-02 11:38:10.704	warn	Authorization Header missing but user/pass defined
                    geofency.0	2017-07-02 11:38:09.521	warn	Authorization Header missing but user/pass defined
                    geofency.0	2017-07-02 11:38:08.141	warn	Authorization Header missing but user/pass defined
                    
                    geofency.0	2017-07-02 11:38:04.740	error	: message handler implemented, but messagebox not enabled. Define common.messagebox in io-package.json for adapter or delete message handler.
                    
                    

                    Gesendet von iPhone mit Tapatalk Pro

                    1 Reply Last reply Reply Quote 0
                    • M
                      Marty56 last edited by

                      Frage:

                      1. Wie kann ich die <your iobroker/domain="">ermitteln?

                      2. Welche Version des Cloud Adapters wird vorausgesetzt? ist V1.07 ok.</your>

                      1 Reply Last reply Reply Quote 0
                      • apollon77
                        apollon77 last edited by

                        @simpixo:

                        Also ich habe auch aktualisiert, aber seitdem hat das ganze nicht mehr funktioniert [emoji52]

                        Habe folgende Fehler im Log gehabt! Die hinterlegten Daten waren aber richtig!!! `

                        Lass mal unter "Debug" laufen, dann sollten auch die User/Passwort im Code stehen … passt das irgendwie? Im Notfall mit per PN schicken oder so ... dann schau ich

                        1 Reply Last reply Reply Quote 0
                        • apollon77
                          apollon77 last edited by

                          @Marty56:

                          Frage:

                          1. Wie kann ich die <your iobroker/domain="">ermitteln?</your> `

                          Der Standardzugriffsweg laut Readme wäre ein freigegebener Port für deine eigene externe IP. Das ist damit gemeint. Über Cloud würde der Weg die ganz oben in diesem Thread beschrieben mit der 0.2.0 tun.
                          @Marty56:

                          2. Welche Version des Cloud Adapters wird vorausgesetzt? ist V1.07 ok. `
                          Für beispiel oben: Ja

                          1 Reply Last reply Reply Quote 0
                          • M
                            Marty56 last edited by

                            Der Sinn von der Beta ist ja, dass man keinen Port in seiner Firewall öffnen muss, also ist klar, dass sich die Frage auf die Cloudlösung bezieht.

                            Und da ist mir die Beschreibung oben nicht klar.

                            Was ich versucht habe.

                            Ich habe eine Url erzeugt, die eine Domain in dem Cloud Adapter festlegen soll.

                            Bei mir sieht die so aus:

                            'custom_geofency'

                            diesen Wert habe ich in den Cloud Adapter eingetragen.

                            Dann würde ich die Url, die ich in Geo Fency für den Post eintragen muss lauten:

                            https://iobroker.de/service/custom_geofency:7999 plus eine extension, die die unterschiedlichen Locations unterscheidet. z.B.

                            https://iobroker.de/service/custom_geofency:7999/home

                            wird in den Webhook für Geofency eingetragen, plus natürlich das Login und Password, dass ich vorher in den Geofency Adapter definiert hatte.

                            Leider funktioniert es nicht.

                            1 Reply Last reply Reply Quote 0
                            • apollon77
                              apollon77 last edited by

                              Du vermischst da zwei Wege den Adapter zu nutzen.

                              Der Standardweg ist der offene Port wie auf der Github-Readme beschrieben.

                              Der neue Weg der mit der 0.2.0 geht ist das man es per Cloud macht.

                              Dazu musst Du PRO DEVICE einen custom_* Namen anlegen, also z.B. custom_geofency_device1 .

                              Dann trägt man die passende URL bei Geofency ein: https://iobroker.net/service/custom_geo … loud-Token> (nichts weiter anfügen)

                              Damit bekommt man das JSON von der Geofency App am Ende im Datenpunkt cloud.0.services.custom_geofency_device1

                              Daher braucht man dann noch das oben gepostete JavaScript was darauf reagiert wenn sich der Datenpunkt ändert und es dann per "Message" an den Adapter sendet.

                              1 Reply Last reply Reply Quote 0
                              • M
                                Marty56 last edited by

                                Ok. Ich glaube ich habe es jetzt zum Laufen gebracht.

                                Bekomme beim ersten Mal nach Anlegen eines neuen custom_service eine Warning

                                cloud.0 2017-07-03 03:44:46.781 warn setObject services.custom_xxxx (type=state) property common.role missing!

                                Außerdem erscheint in der Geofancy App beim Testen ein Fenster mit

                                "Fehlgeschlagen" und dem Inhalt "OK".

                                Aber Geoefency scheint den Json String korrekt zu übertragen.

                                Also sieht der neue Adapter sehr vielversprechend aus.

                                Mein Use Case: Ich habe einen iBeacon im Auto und kann damit ioBroker signalisieren, dass ich im Auto bin.

                                Wenn ich mich jetzt im Auto meinem Haus nähere, dann könnte die Garagentür automatisch geöffnet werden.

                                Mal sehn, ob das in der Praxis funktioniert.

                                1 Reply Last reply Reply Quote 0
                                • M
                                  Marty56 last edited by

                                  Ich habe noch ein bisschen getestet.

                                  Wenn man die State von dem Geofancy Adapter anschaut (siehe Bild), dann verstehe ich den Sinn von dem Eintrag "atHome" nicht.

                                  Ich kann ohnehin nur einen Geofancy User eintragen, also wird dieser Listeneintrag in meinem Beispiel mit dem Geofancy User "martin" immer nur einen Eintrag nämlich "martin" enthalten.

                                  Damit ist die Information redundant zu dem State "geofency.0.martin.Home.entry".

                                  Obiges wäre sinnvoll, wenn ich in einer Instanz des Geofancy Adapters mehrere User definieren könnte.

                                  Was mir auch aufgefallen ist, ist dass wenn ich Home verlasse, der Entry "geofency.0.martin.Home.entry" nicht auf 0 wechselt.

                                  Bin nicht sicher, ob das daran liegt, dass ich meine Tests zuhause gemacht habe.

                                  Bei dem Entry Auto funktioniert es. geofency.0.martin.Auto.entry" wechselt seinen Wert, wenn ich Auto verlasse.
                                  2722_bildschirmfoto_2017-07-03_um_04.46.35.png

                                  1 Reply Last reply Reply Quote 0
                                  • M
                                    Marty56 last edited by

                                    Ich habe nochmal eine grundsätzliche Frage.

                                    Mir ist überhaupt nicht klar, warum ich überhaupt den Geofency Adapter benötige, wenn ich ohnehin den Json String sehr leicht parsen kann?

                                    Dein Beispiel Code ist relativ trivial zu erweitern, um alle Infos, die ich über Geofency Adapter bekomme, zu ermitteln.

                                    on({id: "cloud.0.services.custom_M_Handy", change: 'any'}, function(obj) {
                                        try {
                                            data = JSON.parse(obj.state.val);
                                        }
                                        catch (err) {
                                            data = null;
                                        }
                                        if (! data) {
                                            log('ERROR: Geofency data invalid: ' + data, 'error');
                                            return;
                                        }
                                        log("Triggername: " + data.name);
                                        log("Date: " + data.date);
                                        log("Entry: " + data.entry);
                                    });
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • M
                                      Marty56 last edited by

                                      und noch eine Frage:

                                      Die URL, die ich für den custom Service in Geofency eintrage, muss am Ende meinen APP Key enthalten.

                                      Das ist m.M. ein "Man in the middle" Angriffsvektor, weil die URL bei https nicht geschützt wird, sondern nur der Inhalt der Message.

                                      Der Inhalt kann aber kompromittiert sein und landet dann schon mal in einem Cloud.Service.endpoint.

                                      Damit hat der Angreifer einen schönen Angriffsvektor, wenn er die Kenntnis der URL durch Mitlesen gewonnen hat.

                                      Besser wäre ein feste Url. z.B. "https://iobroker.net" und dann eine Basic Authentication, um den Zugang zum Cloud.Endpoint zu schützen. Damit würde nur Inhalt von autorisierten Gegenstellen in den Endpoint übernommen.

                                      1 Reply Last reply Reply Quote 0
                                      • apollon77
                                        apollon77 last edited by

                                        @Marty56:

                                        Bekomme beim ersten Mal nach Anlegen eines neuen custom_service eine Warning

                                        cloud.0 2017-07-03 03:44:46.781 warn setObject services.custom_xxxx (type=state) property common.role missing! `
                                        Wird mit nächsten cloud-Update gefuxt. Ist aber erstmal egal 🙂

                                        @Marty56:

                                        Ich habe noch ein bisschen getestet.

                                        Wenn man die State von dem Geofancy Adapter anschaut (siehe Bild), dann verstehe ich den Sinn von dem Eintrag "atHome" nicht.

                                        Ich kann ohnehin nur einen Geofancy User eintragen, also wird dieser Listeneintrag in meinem Beispiel mit dem Geofancy User "martin" immer nur einen Eintrag nämlich "martin" enthalten.

                                        Damit ist die Information redundant zu dem State "geofency.0.martin.Home.entry".

                                        Obiges wäre sinnvoll, wenn ich in einer Instanz des Geofancy Adapters mehrere User definieren könnte. `

                                        Das ist so nicht war. lege einen zweiten "custom" an und zweites JavaScript und Du kannst mehrere User haben. SO habe ich es für meine Frau und mich. Und bei beiden heisst unsere "Heim-Location" einfach "Zuhause" und das ist als Name in der Adapterkonfig bei "at Home" eingetragen und damit sehe ich wer von uns beiden daheim ist. Also macht schon so sinn und auch der neue Weg geht mit mehreren Usern - nicht ganz so simpel wie ohne Cloud-Nutzung, aber dafür mus ich keinen Port freigeben.

                                        @Marty56:

                                        Was mir auch aufgefallen ist, ist dass wenn ich Home verlasse, der Entry "geofency.0.martin.Home.entry" nicht auf 0 wechselt.

                                        Bin nicht sicher, ob das daran liegt, dass ich meine Tests zuhause gemacht habe.

                                        Bei dem Entry Auto funktioniert es. geofency.0.martin.Auto.entry" wechselt seinen Wert, wenn ich Auto verlasse. `
                                        Da musst Du mal schauen was die Geofency App so schickt … sollte aber passen wenn das JSON ankommt.

                                        @Marty56:

                                        Ich habe nochmal eine grundsätzliche Frage.

                                        Mir ist überhaupt nicht klar, warum ich überhaupt den Geofency Adapter benötige, wenn ich ohnehin den Json String sehr leicht parsen kann?

                                        Dein Beispiel Code ist relativ trivial zu erweitern, um alle Infos, die ich über Geofency Adapter bekomme, zu ermitteln. `

                                        Da hast Du zum teil recht. Der Adapter ist natürlich sinnvoll wenn er nen eigene Webserver aufmacht und so weiter (also der eigentliche Usecase), jetzt hat er "nur" den "atHome-Zähler" Mehrwert aktuell und das ich halt das JSON nicht selbst parsen muss.

                                        Natürlich kannst Du sagen Du nimmst alles selbst auseinander und verzeichtest auf den Adapter … 🙂 Ich habe RAM-technisch gerade kein Problem daher nehme ich einfach den Adapter und mus mich damit also nicht selbst rumschlagen. Und ggf Erweiterungen am Adapter gehen automagisch auch für meine Fälle.

                                        @Marty56:

                                        Die URL, die ich für den custom Service in Geofency eintrage, muss am Ende meinen APP Key enthalten.

                                        Das ist m.M. ein "Man in the middle" Angriffsvektor, weil die URL bei https nicht geschützt wird, sondern nur der Inhalt der Message.

                                        Der Inhalt kann aber kompromittiert sein und landet dann schon mal in einem Cloud.Service.endpoint.

                                        Damit hat der Angreifer einen schönen Angriffsvektor, wenn er die Kenntnis der URL durch Mitlesen gewonnen hat.

                                        Besser wäre ein feste Url. z.B. "https://iobroker.net" und dann eine Basic Authentication, um den Zugang zum Cloud.Endpoint zu schützen. Damit würde nur Inhalt von autorisierten Gegenstellen in den Endpoint übernommen. `
                                        Zuerst einmal ist bei HTTPS der gesamte Netzwerkverkehr geschützt - inklusive der URL! Direkt bei der Verbindung wird die Verschlüsselung ausgehandelt mit der dann der gesamte Request verschlüsselt wird. Also Man-in-the-Middle kann nur passieren wenn in der Geofency-App HTTPS-Zertifikatsfehler ignoriert werden würden. Ansonsten ist die Kommunikation sicher und damit auch die URL.

                                        Geofency überträgt die URLs von Webhooks meines Wissens auch nicht in die Cloud order so. Damit bleibt die URL auf Deinem Handy und ist dort sicher.

                                        Wenn DU natürlich jemandem erlaubst sich die URL da abzuschreiben dann kennt derjenige deinen App-Key und dann ists blöd.

                                        Ingo F

                                        1 Reply Last reply Reply Quote 0
                                        • M
                                          Marty56 last edited by

                                          Hallo Ingo,

                                          Danke für die umfangreiche Kommentierung.

                                          Der Ansatz funktioniert wirklich gut.

                                          Bzgl. des letzten Punkts der Schutz der Url via Https.

                                          Wenn der APP Key mein signierter öffentlicher Schlüssel ist, dann könnte es funktionieren.

                                          Ist das so?

                                          1 Reply Last reply Reply Quote 0
                                          • apollon77
                                            apollon77 last edited by

                                            Mit "App Key" meinte ich die ID vom Cloud-Adapter für die API-Calls … Das ist der Key der deinem Account zugeordnet ist - quasi ein statischer Token. Der wird bei Alexa hinterlegt, bei IFTTT und in dem Fall auch bei den Custom-Posts

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            794
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

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