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@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 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.
    • 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
            • M
              Marty56 last edited by

              So jetzt habe ich ca. 1 Woche getestet und das Ergebnis ist ziemlich durchwachsen.

              Wenn ich bei Geofency aktiviere, dass Fehlermeldungen ausgegeben werden, bekomme ich praktisch ständig Fehler bei jedem Statuswechsel.

              Die Daten werden dann zwar übertragen, aber oft wird der "Anwesend" und "Abwesend" Zustand praktisch gleichzeitig übertragen und es passiert, dass iobroker den falschen Zustand dann speichert.

              Ich habe auch noch bei Geofency in den Settings gespielt, z.B. das eine Anwesenheit min 2. Minuten ist, aber das hat alles nichts gebracht.

              Habt Ihr noch ein paar Hinweis?

              So ist das Ganze leider nicht brauchbar.

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

                Hm … komisch. Bei mir tut Geofency seit Monaten. Ich hab aber nichts mit iBeacon und so, sondern nur zwei Zonen. Sind nur die iobroker Daten falsch oder auch das was in Geofency angezeigt wird?

                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!!! `

                  Hast Du nochmal getestet bzw mehr Infos aus Debug oder so?

                  Ingo F

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

                    Bin leider momentan auf Schulung, kam leider noch nicht dazu! Kann das erst ab dem kommenden Wochenende testen

                    Gesendet von iPhone mit Tapatalk Pro

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

                      Mit Geolocation funktioniert das gut.

                      Mit iBeacons funktioniert es leider nicht.

                      Ich vermute, dass das eher ein Problem von Geofency selber ist, als von ioBroker.

                      Ich teste aber nur die Cloud Service Unterstützung, weil ich das Json File wegen RAM Mangel selber parse und damit den Geofency Adapter nicht installiert habe.

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

                        @simpixo:

                        Bin leider momentan auf Schulung, kam leider noch nicht dazu! Kann das erst ab dem kommenden Wochenende testen `

                        Sorry das ich nochmal nerve … hast Du ein Update ?!

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

                          Wir veröffentlichen de 0.2.0 jetzt mal. Wenn noch Fehler mit Auth kommen dann fixen wir es. Dafür das die verhoer gar nicht ging wird mal zumindestens nicht schlechter 🙂

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

                            Servus…

                            Sorry für die verspätet Rückmeldung, hatte das aber total vergessen 😞

                            Ich habe natürlich das Ganze jetzt installiert und getestet, es funktioniert bei mir nicht wie du das beschreibst

                            nach dem update funktioniert die alte Methode gar nicht mehr, bekomme die folgende Meldung im Log angezeigt

                            geofency.0	2017-09-28 19:02:58.231	warn	Authorization Header missing but user/pass defined
                            

                            Update: Die Meldung bekomme ich auch ab und an im Log

                            geofency.0	2017-09-28 19:13:33.994	error	: message handler implemented, but messagebox not enabled. Define common.messagebox in io-package.json for adapter or delete message handler.
                            

                            Nehme ich User/Passwort komplett raus, funktioniert der Webhook!!!

                            Die neue Methode, funktioniert aber nicht so wie sie soll, beim betreten und verlassen der festgelegten Zone, bekomme ich eine Meldung "Fehlgeschlagen (result: OK)"

                            432_img_2381.jpg

                            das JSON kommt auch im ioBroker an. Das Script läuft aber Geofency verarbeitet das nicht, denn der Geofency State ändert sich leider nicht

                            Mach ich vielleicht was falsch? :oops:

                            Gruß

                            Adrian

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

                              Lass bitte mal in Debug laufen (Instanzen-expertenmodus) und schick dann mal log gesamt vom Start und einem call.

                              Zu Messagebox Fehler: mach mal an kommandozeile iobroker upload geofency und danach ggf iobroker stop/start

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

                                Also….

                                ich habe iobroker upload geofency + stop/start ohne Erfolg ausgeführt.

                                hier der Auszug aus dem Log im DEBUG Modus

                                Neue Methode: Json landet bei iobroker, aber Geofency kann nichts damit anfangen

                                geofency.0	2017-09-28 19:27:25.200	info	adapter geofency received webhook from device Adrian with values: name: Zuhause, entry: 1
                                geofency.0	2017-09-28 19:27:25.200	info	Message received = {"command":"send","message":{"user":"Adrian","data":{"device":"E3FDF3F9-A422-4C42-9BCC-7068681DC2B1","radius":100,"longitude":8.435085,"id":"36C6729C-DF91-42BA-98DD-B767788757D5","a
                                geofency.0	2017-09-28 19:27:25.200	debug	inMem message messagebox.system.adapter.geofency.0 messagebox.system.adapter.geofency.0
                                host.HQ-ioBroker-Produktion	2017-09-28 19:27:08.957	info	instance system.adapter.vis-google-fonts.0 terminated while should be started once
                                geofency.0	2017-09-28 19:27:03.291	info	http server listening on port 7999
                                geofency.0	2017-09-28 19:27:03.285	info	Adapter got 'Ready' Signal - initiating Main function...
                                geofency.0	2017-09-28 19:27:03.283	info	starting. Version 0.2.0 in /opt/iobroker/node_modules/iobroker.geofency, node: v6.11.2
                                geofency.0	2017-09-28 19:27:03.265	debug	statesDB connected
                                geofency.0	2017-09-28 19:27:03.246	debug	objectDB connected
                                

                                Script das ich nutze:

                                on({id: "cloud.0.services.custom_geofency_adrian", 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 = 'Adrian';
                                    sendTo('geofency.0', {'user': user, 'data': data});
                                });
                                

                                Alte Methode: (Mit hinterlegten Passwort) Funktioniert nicht!

                                geofency.0	2017-09-28 19:32:30.323	warn	Authorization Header missing but user/pass defined
                                geofency.0	2017-09-28 19:32:30.323	debug	Authorization Header is:
                                

                                Alte Methode: (Ohne Passwort) Funktioniert!

                                geofency.0	2017-09-28 19:34:08.293	info	adapter geofency received webhook from device Cedric with values: name: Zuhause, entry: 1
                                geofency.0	2017-09-28 19:34:08.246	debug	request path:undefined
                                

                                Hilft dir das weiter?

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

                                  Interessant…. :shock:

                                  Jetzt wird das JSON doch verarbeitet....

                                  Aber die Meldung auf dem Handy bekomme ich immer noch

                                  Gruss

                                  Adrian

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

                                    Das es verarbeitet wird zeigt das log. Sobald die Kinder im Bett sind schau ich nochmal rein.

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

                                      Soooo, Rechercheergebnisse:

                                      Geofency und Username/Passwort: Die App sendet KEINEN HTTP-Authorization Header, damit kann der Server die Usernamen/Passwort gar nicht validieren … er kriegt die gar nicht 😞 Laut Google ist das Problem wohl wirklich ein Problem der App.

                                      Ich hab mal den App-Hersteller angeschrieben. Mal schauen was der sagt.

                                      Also aktuell einfach im Adapter leer lassen.

                                      Ansonsten mit Cloud tut bei mir alles. Achja: Ich hatte auch mal Fehlgeschlagen mit "result OK" ... lag daran das ich die URL geändert hatte und in der App nicht auf "Sichern" geklickt habe sondern direkt getestet hatte. Versuch das mal 🙂

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

                                        3644_bildschirmfoto_2017-10-03_um_21.27.28.png @apollon77:

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

                                        Hallo kann die Version leider nicht installieren bekomme im Log eine Fehlermeldung wo ich aber nicht weis wie ich das ändern kann.

                                        Sorry kenne mich nicht so gut aus. Vielleicht kann mir ja mal jemand helfen

                                        1 Reply Last reply Reply Quote 0
                                        • Homoran
                                          Homoran Global Moderator Administrators last edited by

                                          Wenn ich das richtig sehe, hast du ein Problem mit npm. Meinst du das?

                                          Was gibt die Konsole aus bei

                                          sudo node -v
                                          sudo npm -v
                                          

                                          Gruß

                                          Rainer

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

                                            das kommt dabei raus

                                            ! pi@raspberrypi:/opt/iobroker $ sudo node -v
                                            ! v4.3.2
                                            ! pi@raspberrypi:/opt/iobroker $ sudo npm -v
                                            ! ERROR: npm is known not to run on Node.js v4.3.2
                                            ! Node.js 4 is supported but the specific version you're running has
                                            ! a bug known to break npm. Please update to at least ${rel.min} to use this
                                            ! version of npm. You can find the latest release of Node.js at https://nodejs.org/
                                            ! pi@raspberrypi:/opt/iobroker $

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            399
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            20
                                            124
                                            19001
                                            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