Asystent AI
Owntracks + Openhab
 
Powiadomienia
Wyczyść wszystko

Owntracks + Openhab

11 Wpisów
2 Użytkownicy
4 Reactions
1,680 Wyświetleń
(@lion77)
Wpisów: 5
Bywalec
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 
[#1901]

Witam.

Zwracam się z uprzejmą prośbą o pomoc w utworzeniu geolokalizacji w Openhab2.
Starałem się zrobić wszystko wg opisu Adriana:
https://www.smartnydom.pl/geolokalizacja-w-inteligentnym-domu/
Niestety w Openhabie nie umiem spowodować zmiany stanu Item – cały czas jest null.

Switch Lokalizacja_Dom   { mqttitude="MojMQTTBroker:owntracks/venom/event:Dom" }
Switch Lokalizacja_Praca { mqttitude="MojMQTTBroker:owntracks/venom/event:Praca"}

Dwa telefony łączą się bez problemu do brokera MQTT i wzajemnie w aplikacji Owntracks również widać, czy urządzenie jest w zdefiniowanym regionie.
Po uruchomieniu w terminalu subskrypcji, też widać informacje z aplikacji.

[21:30:48] openhabian@openhab:~$ mosquitto_sub -t owntracks/malina/venom -u malina -P ****
{"_type":"location","acc":62,"alt":320,"batt":71,"conn":"w","inregions":["Dom","Piekary Śląskie"],"lat":50.*******,"lon":18.*******,"t":"p","tid":"MK","tst":1600457135,"vac":2,"vel":0}

Nie wiem, czy binding „OwnTracks (formerly MQTTitude) Binding (1.x)” działa, ponieważ po zainstalowaniu nie widać go w konfiguracji razem z innymi bindingami.
Próbowałem użyć bindingu „GPSTracker Binding”, ale również bez efektu.


 
Dodane : 18/09/2020 10:21 pm
adrian
(@adrian)
Wpisów: 4083
Szefu Admin Zasłużony dla Forum, Patron Strony
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

cześć @lion77

moja sugestia jest taka, żebyś zrezygnował zarówno z bindinga 1 Owntracks i GPSTracker i zrobił to bez nich poprostu przechwytując z MQTT Brokera informacje, które do niego trafiają z telefonów

Tutorial zrobiłem bardzo dawno temu i po różnych zmianach w OH2 i po zebranym doświadczeniu, tak Ci właśnie proponuję.

Nie mam osobiście w tym momencie zrobionych regionów, ale jutro, jak coś to moge Ci machnąć

Tutaj masz przykład, jak zbieram swoją lokalizację bezpośrednio zbierając dane z MQTT Brokera

 

Plik: owntracks.things

Bridge  mqtt:broker:serverBroker [ host="adres-mqtt-brokera", port="port-brokera", secure=true, username="", password="", clientID="OH2Server" ]
{
   Thing mqtt:topic:AdriansOwntrack "Owntrack: Adrian" {
   Channels:
       Type number : Lat "Lat" [ stateTopic="owntracks/adrian/phone", transformationPattern="JSONPATH:$.lat" ]
       Type number : Lon "Lon" [ stateTopic="owntracks/adrian/phone", transformationPattern="JSONPATH:$.lon" ]
       Type number : Batt "Batt" [ stateTopic="owntracks/adrian/phone", transformationPattern="JSONPATH:$.batt" ]
   }
}

Te tutaj "Things" później mapuje do item i mam lokalizację, którą sobie wyświetlam na mapie, jak poniżej.

Jeśli masz przechwycony temat+message do regionu to podeślij, spróbuje przerobić na Switch'a , jak nie masz to w weekend zrobię sobie jakiś region i podeślę Ci przykład


 
Dodane : 18/09/2020 11:16 pm
lion77 zareagował
(@lion77)
Wpisów: 5
Bywalec
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

Cześć @Adrian

Dziękuję za błyskawiczną reakcję i zaangażowanie.

 

Przerobiłem things, ale Visual Studio Code podpowiada mi, że zrobiłem chyba błąd w składni:

Bridge  mqtt:broker:serverBroker [ host="192.168.0.14", port="1883", secure=true, username="malina", password="***", clientID="OH2Server" ]
{
    Thing mqtt:topic:MarcinsOwntrack "Owntrack: Marcin" {
    Channels:
        Type number : Lat "Lat" [ stateTopic="owntracks/malina/venom", transformationPattern="JSONPATH:$.lat" ]
        Type number : Lon "Lon" [ stateTopic="owntracks/malina/venom", transformationPattern="JSONPATH:$.lon" ]
        Type number : Batt "Batt" [ stateTopic="owntracks/malina/venom", transformationPattern="JSONPATH:$.batt" ]
    }
}

Provide a thing type ID and a thing ID in this format: <thingTypeId> <thingId>

 

Jako temat mam "owntracks/malina/venom".

Z mosquitto_sub wywnioskowałem, że "inregions":["Dom","Piekary Śląskie"] muszę jakoś przerobić na Itemy z regionami, ale nie mam pojęcia jak to uczynić.


 
Dodane : 19/09/2020 1:17 am
adrian
(@adrian)
Wpisów: 4083
Szefu Admin Zasłużony dla Forum, Patron Strony
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@lion77 te warningi nie zaburzają funkcjonowania (starsza wersja) jak chcesz mieć bez warning to zrób tak:

w pliku *.things

Bridge  mqtt:broker:serverBroker [ host="192.168.0.14", port="1883", secure=true, username="malina", password="***", clientID="OH2Server" ]
{
    Thing topic MarcinsOwntrack "Owntrack: Marcin" {
    Channels:
        Type number : Lat "Lat" [ stateTopic="owntracks/malina/venom", transformationPattern="JSONPATH:$.lat" ]
        Type number : Lon "Lon" [ stateTopic="owntracks/malina/venom", transformationPattern="JSONPATH:$.lon" ]
        Type number : Batt "Batt" [ stateTopic="owntracks/malina/venom", transformationPattern="JSONPATH:$.batt" ]
    }
}

A items definiuj tak w pliku *.items

Number owntrack_marincs_lat "Marcin: lat: [%.15f °LAT]" { channel="mqtt:topic:serverBroker:MarcinsOwntrack:Lat" }
Number owntrack_marcins_lon "Marcin: lon: [%.15f °LON]" { channel="mqtt:topic:serverBroker:MarcinsOwntrack:Lon" }
Number owntrack_marcins_batt "Marcin: batt: [%d %%]" { channel="mqtt:topic:serverBroker:MarcinsOwntrack:Batt" }

 

W logo możesz pewnie zanleśc tego typu ostrzeżenie: Executing the JSONPATH-transformation failed: Invalid path

Ale nimi się ie przejmuj: Owntrack wysyła różne tematy MQTT i informację i nie potrzebujesz przewarzać ich wszystkich.

Z tymi regionami to jest temat który ma atrybut "_type": "transition" i jest tam informacja enter / leave region. Włączyłem sobie zbieranie wszystkich wiadomości przychodzących z owntrack - jak je pozbieram to zrobię tutaj trochę wiecej przykładów

 


 
Dodane : 19/09/2020 10:29 am
lion77 zareagował
(@lion77)
Wpisów: 5
Bywalec
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

Dzięki @Adrian

Bardzo się ucieszyłem gdy zadziałało, bo siedziałem kilka dni i nocy i nic sensownego nie umiałem wymyślić

Poprawiłem *.Items, bo na końcu channel były spacje i zanim na to wpadłem, to linkowałem w PaperUI.

Number owntrack_marcins_lat  "Marcin: lat:  [%.4f °LAT]" { channel="mqtt:topic:serverBroker:MarcinsOwntrack:Lat"  }
Number owntrack_marcins_lon  "Marcin: lon:  [%.4f °LON]" { channel="mqtt:topic:serverBroker:MarcinsOwntrack:Lon"  }
Number owntrack_marcins_batt "Marcin: batt: [%d %%]"     { channel="mqtt:topic:serverBroker:MarcinsOwntrack:Batt" }

Teraz myślę, jak w HABPanel zrobić mapę.

Nie wiem, czy widget "MAP" nie działa, bo nie wyświetla mapy.

Jeśli widget jest dobry, to muszę LAT i LON zamienić w jeden string i taki Item podać w widgecie.


 
Dodane : 19/09/2020 3:04 pm
adrian
(@adrian)
Wpisów: 4083
Szefu Admin Zasłużony dla Forum, Patron Strony
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@lion77

zrób tak

reguła

rule "Owntrack: Marcin's location conversion"
when
   Item owntrack_marcins_lat changed or
   Item owntrack_marcins_lon changed
then
   val temp_location = new PointType(owntrack_marcins_lat.state as DecimalTypeowntrack_marcins_lon.state as DecimalType)
   owntrack_marcins_location.postUpdate(temp_location)
end

item

Location owntrack_marcins_location "Marcins: location" 

I musisz jeszcze te wszystkie pliki wgrać do /etc/openhab/html/habpanel-map-widget

Później w widget'cie Map wybierz item location owntrack_marcins_location

 

 


 
Dodane : 19/09/2020 6:04 pm
lion77 zareagował
(@lion77)
Wpisów: 5
Bywalec
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

Dziękuję @Adrian

Wszystko działa jak należy.

Jeżeli znajdziesz kiedyś czas i ogarniesz regiony, to już będzie chyba wszystko, co potrzebne do automatyzacji opartej na geolokalizacji.


 
Dodane : 19/09/2020 7:48 pm
adrian
(@adrian)
Wpisów: 4083
Szefu Admin Zasłużony dla Forum, Patron Strony
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

spoko - muszę te regiony złapać przez broker - może jutro wyjdę z domu 😉


 
Dodane : 19/09/2020 11:03 pm
adrian
(@adrian)
Wpisów: 4083
Szefu Admin Zasłużony dla Forum, Patron Strony
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@lion77 wracając do regionów. Przykład regionów:

W Owntrack zdefiniowałem dwa regiony o nazwie

  • dom
  • rolnicza

Do things dodałem takie

Type switch : RegionHouse "W domu" [stateTopic="owntracks/adrian/phone/event", transformationPattern="JSONPATH:$.[?(@.desc=='dom')].event", on="enter", off="leave" ]
Type switch : RegionRolnicza "Rolnicza" [stateTopic="owntracks/adrian/phone/event", transformationPattern="JSONPATH:$.[?(@.desc=='rolnicza')].event", on="enter", off="leave" ]

Zwróć uwagę na stateTopic u Ciebie pewnie musi być cos takiego

owntracks/malina/venom/event

oraz w tym JSONPATH desc == "" tutaj podajesz nazwę regionu

No i oczywiście items

Switch owntrack_adrian_region_house "Adrian w domu" { channel="mqtt:topic:serverBroker:AdriansOwntrack:RegionHouse" }
Switch owntrack_adrian_region_rolnicza "Adrian na rolniczej" { channel="mqtt:topic:serverBroker:AdriansOwntrack:RegionRolnicza" }

Powinno zadziałać, ale musisz trochę się po przemieszczać, żeby Owntrack coś ci powysyłał.

I jeszcze jedno doświadczenie z przeszłości z Regionami.

  • Owntrack nie wysyła regionów z tzw: MQTT retain ustawionym na 1 - czyli po podłączeniu się do MQTT brokera nie dostaniesz informację o ostatnim/aktualnym regionie.
  • Jeśli jest w OTrack ustawione ręczne wysyłanie info to oczywiście nic nie dostaniesz. Gdy wciśniesz wysłanie aktualnej lokalizacji (ręcznie) to nie wyśle Ci czy wszedłeś, wyszedłeś z regionu. Wyśle Ci lokalizację.
  • Coś co było dla mnie upierdliwe to, że jak Owntrack zarejestrował, że jesteś w jakimś regionie, a później np. na wyłączonej komórce z niego wyjdziesz to Owntrack nie wyśle Ci że wyszedłeś z tego regionu. Switch będziesz miał ON i nie będziesz w tym regionie. Ja rozwiązałem to sobie  przez dodatkową regułę.
    • Miałem sporo regionów. Dom, Praca, coś tam i jak
    • jak zarejestrował mi, że jestem w pracy, ale z jakiegoś powodu w OH miałem informację, że jestem w domu to przez regułę zmieniałem Switch dom na OFF. Analogicznie dla pracy i innych regionów
    • Było to trochę kulawe, ale działało
    • Tak się teraz zastanawiam, czy nie dało by się wysyłać z OH zapytania do komórki, "hey gdzie jesteś" - z tego co wiem to można włączyć obsługę komend i może coś się da zrobić - potestuje w wolnym czasie
    • Mam jeszcze inny pomysł z regułą, ale musze sprawdzić w dokumentacji. 

Daj znać, czy Ci zadziała

Pzdr.a

 


 
Dodane : 20/09/2020 8:43 pm
lion77 zareagował
(@lion77)
Wpisów: 5
Bywalec
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

Cześć @Adrian

 

Dzięki za pomoc w zrealizowaniu tematu Geolokalizacji.

Nie obyło się bez problemów (przez pomyłkę pisałem nowy Things poza nawiasem 😀 ), ale można powiedzieć, że wszystko działa jak trzeba.

Przy testowaniu wchodzenia i wychodzenia z regionu, zmieniałem promień np. Dom na 8m lub Praca na 100km i po odświeżeniu informacji od razu był efekt.

Pozdrawiam

Marcin

 Owntracks HabPanel

 
Dodane : 20/09/2020 11:23 pm
adrian
(@adrian)
Wpisów: 4083
Szefu Admin Zasłużony dla Forum, Patron Strony
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@lion77 gitara - ja siedzę jeszcze nad odczytem regionów, które są wysyłane podczas każdej aktualizacji lokalizacji. Zobaczę czy nie da się dzięki temu zrobić tego bardziej precyzyjnego 

I zimno u Ciebie na tym Dworze 😉 włącz tam jakieś ogrzewanie bo dworzanie pomarzną 😋 


 
Dodane : 20/09/2020 11:33 pm
Udostępnij: