NEWS
Adapter: Geofency
-
Klasse, dass es Geofency nun als Adapter gibt Top!
Folgende Punkte sind mir aufgefallen:
Adapter Version 0.1.1 (neuste Version)
1.) Kategorie: Wartung
Passt nicht. Ich wüsste aber auch nicht die richtige Kategorie
2.) atHome funktioniert bei mir nicht
Ich habe als Ortsnahme für Zuhause Wohnung eingetragen.
Mein Device ist in der Webholk-URL mit 0 bezeichnet.
Der Datenpunkt 0.Wohnung.entry ändert sich auch korrekt.
Die Datenpunkte atHome und atHomeCount bleiben leer.
-
Wofür könnte man das brauchen, wenn die übergeordnete Variable at Home sich auch ändert?
Mir sind die zwei "globalen" Variablen auch aufgefallen und das sie sich nicht ändern, hab das aber auf meine fehlprogrammierung des Adapters geschoben.
Ich hatte gehofft, dass es sich um einen String handelt, welcher den aktuellen Standort respetive den letzten Standort im Klartext wiedergibt. Der count könnte so schön die verstrichene Zeit in min. Wiedergeben…das wäre doch was :roll:
Gruß
-
Hi Mr. Burns,
ich verstehe das so:
atHome
hier werden die Personen eingetragen, die derzeit am definierten Ort "zuhause" sind.
Die Namen der Personen sind dann die, die in der URL in geofency eingetragen sind.
z.B: "Gabi, Horst,"
atHomeCount
Die Anzahl der Personen, die gerade zuhause sind.
Im Beispiel oben: 2
Kann man auch selbst per Script lösen. Mit den beiden Datenpunkten ist diese Info für eine Anwesenheitserkennung über Geofency direkt als State verfügbar, ohne dass man ein Script verwenden muss.
Was Du möchtest kannst Du auch in Javascript lösen.
Du machst je Person ein on( mit RegEx auf den Ort) und erhält damit immer den jeweiligen aktuellen Ort (oder verlassenen Ort) der entsprechenden Person.
Meine Wünsche an den Adapter:
-
Leerzeichen in Ortsnamen werden in _ gewandelt. ein Punkt bleibt ein Punkt, z.B. in Dr. xyz. Damit habe ich eine Ebene mehr im Datensatz. Ggf. Konfigurierbar, ob Punkte auch im _ umgewandelt werden sollen.
-
die Info ob iBeacon oder Ort kann ich aus dem Device Object mit getObject extrahieren. schön wäre ggf. ein Datenpunkt mit der Info, bzw. konfigurierbar, dass man iBeacon Infos ausblenden kann. Wenn mein Auto in der Nähe meines Büros parkt, bin ich z.B. über iBeacon im Auto und gleichzeitig im Büro. Bekommt man aber auch per Javascript hin.
-
-
Hallo,
das Ersetzen eines Punktes durch einen Unterstrich habe ich implementiert und dafür einen Pullrequest gestellt.
Nicht ganz verstanden habe ich deinen Wunsch nach der Behandlung eine Beacons. Wenn der Beacon einen
eigenen Ortsnamen hat, kannst Du ihn doch von den Geo-Orten unterscheiden. Eine ggf. übergebene Beacon-ID
als Datenpunkt anzulegen ist aber kein Problem. Aber wo ist der tiefere Sinn, wenn durch den "Ortsnamen" schon
bekannt ist, dass es sich um einen Beacon handelt.
Viele Grüße.
-
Danke soef
ich glaube die Unterscheidung mit den iBeacons braucht man wirklich nicht
-
Ein toller Adapter…
vielen Dank dafür.
Hat schon jemand hinbekommen, das sich die Übergeordnete Variable ändert?
Bei mir bekomme ich das leider nicht hin.
Wenn ja könntet Ihr mal sagen wie Ihr das eingerichtet habt?
Gruß Sven
-
Zwei Punkte noch zum Adapter:
1.)
Die Datenpunkte atHome und atHomeCount füllen sich nicht
2.)
bei iBeacons kann man einstellen, dass die Adresse des Standorts aktualisiert wird.
Diese Daten werden in keinem Datenpunkt abgebildet (latitude, longitude, address)
Anwendungsfall:
iBeacon im Auto. ioBroker weiss, wo das Auto steht.
-
Hallo,
bin nicht so in der Adapterentwickjlung drinn.
Die HomeVariablen werden nicht gefüllt, weil das adapter.getState schief geht:
function setAtHome(userName, body) { if (body.name.toLowerCase() !== adapter.config.atHome.toLowerCase()) return; var atHomeCount, atHome; adapter.getState(stateAtHomeCount, function (err, obj) { if (err || !obj) return; atHomeCount = obj.val; adapter.getState(stateAtHome, function (err, obj) { if (err || !obj) return; atHome = obj.val ? JSON.parse(obj.val) : []; var idx = atHome.indexOf(userName); if (body.entry === '1') { if (idx < 0) { atHome.push(userName); adapter.setState(stateAtHome, JSON.stringify(atHome), true); } } else { if (idx >= 0) { atHome.splice(idx, 1); adapter.setState(stateAtHome, JSON.stringify(atHome), true); } } if (atHomeCount != atHome.length) adapter.setState(stateAtHomeCount, atHome.length, true); }); }); }
Warum: Aus meiner Sicht sieht alles gut aus…
err und obj sind beide "null".
=> Fehler? Beide States sind vorhanden, allerdings leer.
Hier müßte also 0 und "" zurück gegeben werden?
-
Hallo,
Umgehungslösung:
atHomeCount mit "0"
und
atHome mit "[]"
befüllen. Danach läuft es.
-
Hallo,
Beim Hinzufügen eines zweiten Gerätes:
raspberrypi 2016-03-07 00:43:19 error instance system.adapter.geofency.0 terminated with code 6 (uncaught exception) geofency-0 2016-03-07 00:43:19 info terminating http server on port 8000 TypeError: 2016-03-07 00:43:19 error at Decoder.add (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/socket.io-parser/index.js:247:12) TypeError: 2016-03-07 00:43:19 error at Decoder.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/socket.io-parser/node_modules/component-emitter/index.js:134:20) TypeError: 2016-03-07 00:43:19 error at Decoder. (/opt/iobroker/node_modules/component-bind/index.js:21:15) TypeError: 2016-03-07 00:43:19 error at Manager.ondecoded (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:333:8) TypeError: 2016-03-07 00:43:19 error at Manager.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:131:20) TypeError: 2016-03-07 00:43:19 error at Manager. (/opt/iobroker/node_modules/component-bind/index.js:21:15) TypeError: 2016-03-07 00:43:19 error at Socket.onpacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:229:12) TypeError: 2016-03-07 00:43:19 error at Socket.onack (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:305:9) TypeError: 2016-03-07 00:43:19 error at Socket. (/opt/iobroker/node_modules/iobroker.geofency/geofency.js:186:26) TypeError: 2016-03-07 00:43:19 error at setStates (/opt/iobroker/node_modules/iobroker.geofency/geofency.js:140:12) TypeError: 2016-03-07 00:43:19 error Cannot read property 'entry' of undefined uncaught 2016-03-07 00:43:18 error exception: Cannot read property 'entry' of undefined geofency-0 2016-03-07 00:43:18 info adapter geofency received webhook from device ipadwh with values: name: Home, entry: 0
-
Hallo,
Umgehungslösung:
atHomeCount mit "0"
und
atHome mit "[]"
befüllen. Danach läuft es. `
Super analyse! Danke!
Kannst Du ein Pull-Request (heisst das so?) auf Github machen?
Was wäre der beste Weg?in der io-package.json bei beiden Datenpunkten "def": anpassen?
-
Hallo,
hab' die Defaults angepasst. Auch müsste die vorgenommene Änderung am Source die beiden States bei Bedarf beim Start anpassen.
Pull Request ist gestellt. Müsste Bluefox nach seinem Urlaub dann mergen.
Viele Grüße.
-
Hallo zusammen!
Ich oute mich mal als ioBroker Anfänger.
Aktuell habe ich 2 Fragen zu dem Geofency Adapter:
- Was muss ich einstellen, damit https funktioniert?
Nach dem einfachen aktivieren erhalte ich nur diese Meldung im Log:
Error Cannot enable secure web server, because no certificates found: undefined, undefined
- Und ich verstehe nicht, warum es empfohlen ist, einen Reverse-Proxy vor den Dienst zu setzen?
Ob nun die FritzBox weiterleitet oder noch Proxy dazwischen ist, kommt doch auf´s selbe raus, oder?
Kennwort kann doch auch im Adapter aktiviert werden.
Ich danke euch im Voraus!
Gruß
Rene
-
Hallo,
dir fehlen dann wahrscheinlich in den Systemeinstellungen von ioBroker (ganz oben rechts das Zahnrad) die Zertifikate.
Viele Grüße.
-
Danke für deine Antwort.
Ich habe jetzt mal Zertifikate hinzugefügt (zusätzlich zu den Standard-Zertifikaten).
Der Fehler tritt weiterhin auf.
Ich vermute, ich kenne die Stelle nicht, an der man die zu verwendenden Zertifikate definiert.
Die Fehlermeldung sagt ja undefined. Aber in den Parametern und in der Doku finde ich nix.
Beste Grüße
René
-
Hallo,
irgendwie ist das nicht vollständig implementiert. Wahrscheinlich fehlen in deiner Adapter.Config die Namen der zu verwendenden Zertifikate.
Öffne einmal im ioBroker-Admin den "Objecte" Tap, aktiviere oben in der Toolbar "Zeige Systemobjecte" und suche den Eintrag "system.adapter.geofency".
In der gefundenen Zeile dann ganz rechts auf das Zahnrad klicken. Unter dem Tap "Raw" das "native" Object betrachten.
Für die Zertifikate sind die beiden Einträge "certPrivate" und "certPublic" wie hier unten notwendig. Die Konfiguration dieser Werte wurde wahrscheinlich vergessen.
... "native": { "port": 7999, "ssl": false, "user": "user", "pass": "password", "atHome": "Home", "certPrivate": "defaultPrivate", "certPublic": "defaultPublic", "usessl": false, "devices": "iPhone-xy" }, ...
Vor Anpassung dieses Objects den Geofency Adapter einmal beenden und nach erfolgter Änderung wieder starten.
Viele Grüße.
-
Hallo zusammen,
ich habe mal eine Frage zu diesem Adapter. Ich bin noch relativ neu im HM-Bereich und es kann sein das ich hier voll auf dem Holzweg bin. :?
Ich habe eine CCU2, ein dutzend Aktoren, einen Raspberry 2 mit ioBroker und dem Geofency Adapter sowie den hm-rega und hm-rcp Adaptern.
Das Ändern der Geofency Status für unsere beiden iPhones funktioniert in ioBroker auch wunderbar. Jetzt kommt aber mein Knackpunkt:
Wie bekomme ich diese beiden States in die CCU oder wie kann ich da mit den States als Variable arbeiten?
Grüße Markus
-
Hallo,
willkommen hier im Forum.
Du kannst den HM-REGA Adapter nutzen, um die States aus dem Geofency Adapter in eine Homematic Variable zu schreiben.
-
Variable in Homematic anlegen
-
rega-Adapter neu synchronisieren bzw neu starten
-
mini javascript anlegen:````
on("geofency.0.NAME.Zu_Hause.entry"/entry/, hm-rega.0.NUMMERDERCCUVARIABLE); // für jede Variable diese zeile kopieren und anpassen -
fertig; bei Änderung des Geofency Status, wird der gleiche Wert in die CCU Variable geschrieben.
Gruß
Pix
PS: Bitt in Zukunft für eine neue Frage einfach einen neuen Thread mit passendem Titel (zB "Frage: geofency Status in CCU übertragen") aufmachen, danke.
-
-
Hallo,
ich wollte mich hier nochmal melden, da die Variablen entry und leave leider bisher noch gleichzeitig geändert werden. Dazu gibt es auch schon einen Eintrag im GIT. Da ich die Funktion bisher eigentlich immer genutzt habe, würde ich gerne wissen ob ich die Möglichkeit habe wieder zu einer "älteren" Version des Adapters zurück zu kehren, in dem es noch funktioniert hat.
Wenn ja wie?
Oder ist da schon jemand dran das Problem zu lösen? Oder kann ich bei der Lösung in Form von Tests behilflich sein?
Adapter programmieren kann ich leider nicht.
Danke Gruß Sven
-
Hi,
wollte da mal gerade reinschauen.
Also der "entry"-Datenpunkt wird immer bei einer Änderung aktualisiert und hat den Wert 0 oder 1 je nachdem ob Anwesend oder nicht.
Zusätzlich wird lastEntry und lastLeave gesetzt je nachdem wie sich entry ändert (entry auf 0, dann "lastLeave" und entry auf 1 dann "lastEnter").
Was ist daran falsch bzw. soll anders sein?