livetracking mit owntracks

Begonnen von TWART016, 15 April 2019, 22:46:47

Vorheriges Thema - Nächstes Thema

TWART016

Hallo,

ich würde gerne owntracks mit livetracking konfigurieren. Die App ist installiert und sendet die Nachrichten an MQTT (Mosquitto). Leider habe ich in keinem Wiki / Forum gefunden wie die Struktur aussehen muss.

Wo muss MQTT Subscript werden? Wie ist die Verbindung zu livetracking, z.B. welche Attribute.


Gruß
TWART016

Markus M.

Du brauchst ein MQTT Server Device:
define mqtt MQTT 127.0.0.1:1883

Und ein MQTT Device für die Subscriptions:
(OwnTracks UserID -> fhem / DeviceID -> iphone)
define owntracks MQTT_DEVICE
attr owntracks IODev mqtt
attr owntracks publishSet_cmd owntracks/fhem/iphone/cmd
attr owntracks publishSet_msg owntracks/fhem/iphone/msg
attr owntracks qos at-least-once
attr owntracks subscribeReading_beacon owntracks/fhem/iphone/beacon
attr owntracks subscribeReading_cmd owntracks/fhem/iphone/cmd
attr owntracks subscribeReading_dump owntracks/fhem/iphone/dump
attr owntracks subscribeReading_event owntracks/fhem/iphone/event
attr owntracks subscribeReading_iphone owntracks/fhem/iphone
attr owntracks subscribeReading_msg owntracks/fhem/iphone/msg
attr owntracks subscribeReading_step owntracks/fhem/iphone/step
attr owntracks subscribeReading_waypoints owntracks/fhem/iphone/waypoints


Und im Livetracking Device weist du es dann zu:
define livetracking livetracking
attr livetracking owntracksDevice owntracks


Das war's eigentlich auch schon, danach solltest du die Daten in Livetracking haben.

M
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

TWART016

Bei mir tauchen die Event in MQTT aber anders auf
owntracks/fhem/iphone
also ohne ein /xxx

In den Daten steht dann
{"tst":467854548,"acc":65,"_type":"location","alt":295,"lon":9.95784644786,"vac":10,"p":98.4472872434,"lat":48.46812144755,"batt":24,"conn":"w","tid":"5B"}

tomleitner

Hallo, ich versuche grade ebensolches.

Mosquitto läuft, die Owntracks Daten tauchen dort auf. Habe ein MQTT2 Device mit Autocreate anlegen lassen und bekomme readings.

Allerdings klappt die Verbindung mit dem "livetracks" device nicht!

Aktuell schaut das Ganze so aus:
define MQTT_OwnTracks MQTT2_CLIENT fhem-if:1883
attr MQTT_OwnTracks autocreate yes
attr MQTT_OwnTracks clientId LiveTracking
attr MQTT_OwnTracks disable 0
attr MQTT_OwnTracks room MQTT,Live Tracking
attr MQTT_OwnTracks username fhem

define OwnTracks MQTT2_DEVICE LiveTracking
attr OwnTracks IODev MQTT_OwnTracks
attr OwnTracks readingList LiveTracking:owntracks/USERNAME/XXXXXXXXXXXXXXXX:.* { json2nameValue($EVENT, 'XXXXXXXXXXXXXXXX', $JSONMAP) }\
LiveTracking:owntracks/USERNAME/XXXXXXXXXXXXXXXX/dump:.* { json2nameValue($EVENT, 'dump_', $JSONMAP) }\
LiveTracking:owntracks/USERNAME/XXXXXXXXXXXXXXXX/waypoints:.* { json2nameValue($EVENT, 'waypoints_', $JSONMAP) }
attr OwnTracks room Live Tracking,MQTT

define LiveTracking livetracking
setuuid LiveTracking 5cee5656-f33f-44cf-05c2-27859a250f1e5025
attr LiveTracking owntracksDevice OwnTracks
attr LiveTracking room Live Tracking
attr LiveTracking stateFormat location


Das Passwort für das MQTT_OwnTracks device habe ich natürlich gesetzt und es klappt auch. USERNAME und XXXXXXXXXXXXX sind meine Daten bei OwnTracks -- hier ausgeblendet.

Was mache ich falsch?

Danke // Tom


Beta-User

Vorneweg: Besser lists oder RAW-Definitionen liefern. Da sieht man dann nämlich auch, wie die Readings ausschauen, und die sind hier evtl. das Problem (genauer: deren Namen).

Mach' mal einen gültigen Wert für autocreate an das IO und bau die json2nameValue-Anweisungen auf die einfache Form um (nur ein Argument), lösche die vorhandenen Readings am MQTT2_DEVICE.

Dann waren, bis neue Werte reinkommen, dann könnte es schon passen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

tomleitner

Danke hier .. hier die Raw Defs:

defmod MQTT_OwnTracks MQTT2_CLIENT fhem-if:1883
attr MQTT_OwnTracks autocreate yes
attr MQTT_OwnTracks clientId LiveTracking
attr MQTT_OwnTracks disable 0
attr MQTT_OwnTracks room MQTT,Live Tracking
attr MQTT_OwnTracks username fhem

setstate MQTT_OwnTracks opened
setstate MQTT_OwnTracks 2019-05-29 12:23:01 state opened


dann:

defmod OwnTracks MQTT2_DEVICE LiveTracking
attr OwnTracks IODev MQTT_OwnTracks
attr OwnTracks readingList LiveTracking:owntracks/USERNAME/XXXXXXXXXXXXXXXXXXXXXXXXXX:.* { json2nameValue($EVENT, 'XXXXXXXXXXXXXXXXXXXXXXXXXX', $JSONMAP) }\
LiveTracking:owntracks/USERNAME/XXXXXXXXXXXXXXXXXXXXXXXXXX/dump:.* { json2nameValue($EVENT, 'dump_', $JSONMAP) }\
LiveTracking:owntracks/USERNAME/XXXXXXXXXXXXXXXXXXXXXXXXXX/waypoints:.* { json2nameValue($EVENT, 'waypoints_', $JSONMAP) }
attr OwnTracks room Live Tracking,MQTT

setstate OwnTracks 2019-05-29 12:30:07 XXXXXXXXXXXXXXXXXXXXXXXXXX__type location
setstate OwnTracks 2019-05-29 12:30:07 XXXXXXXXXXXXXXXXXXXXXXXXXX_acc 65
setstate OwnTracks 2019-05-29 12:30:07 XXXXXXXXXXXXXXXXXXXXXXXXXX_alt 344
setstate OwnTracks 2019-05-29 12:30:07 XXXXXXXXXXXXXXXXXXXXXXXXXX_batt 99
setstate OwnTracks 2019-05-29 12:30:07 XXXXXXXXXXXXXXXXXXXXXXXXXX_conn w
setstate OwnTracks 2019-05-29 12:30:07 XXXXXXXXXXXXXXXXXXXXXXXXXX_inregions_1 Work
setstate OwnTracks 2019-05-29 12:30:07 XXXXXXXXXXXXXXXXXXXXXXXXXX_lat  xxxxxxxxx
setstate OwnTracks 2019-05-29 12:30:07 XXXXXXXXXXXXXXXXXXXXXXXXXX_lon xxxxxxxxx
setstate OwnTracks 2019-05-29 12:30:07 XXXXXXXXXXXXXXXXXXXXXXXXXX_t t
setstate OwnTracks 2019-05-29 12:30:07 XXXXXXXXXXXXXXXXXXXXXXXXXX_tid T
setstate OwnTracks 2019-05-29 12:30:07 XXXXXXXXXXXXXXXXXXXXXXXXXX_tst 1xxxx3826
setstate OwnTracks 2019-05-29 12:30:07 XXXXXXXXXXXXXXXXXXXXXXXXXX_vac 10
setstate OwnTracks 2019-05-29 11:57:07 dump__type dump
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration__type configuration
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_allowRemoteLocation true
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_allowinvalidcerts true
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_auth true
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_cleanSession false
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_clientId
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_clientpkcs
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_cmd false
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_deviceId
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_extendedData true
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_host XXXXXXXXXXXXXXXXXXX
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_ignoreInaccurateLocations 0
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_ignoreStaleLocations 0
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_keepalive 60
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_locatorDisplacement 200
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_locatorInterval 180
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_locked false
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_mode 0
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_monitoring 2
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_mqttProtocolLevel 3
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_passphrase
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_password XXXXXXXXXXXXXX
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_policymode 0
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_port XXXX
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_positions 50
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_pubQos 1
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_pubRetain true
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_pubTopicBase
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_ranging false
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_servercer
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_sub false
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_subQos 1
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_subTopic
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_tid T
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_tls true
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_url
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_usePassword true
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_usepolicy true
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_username XXXXXXX
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_validatecertificatechain false
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_validatedomainname false
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_waypoints_1__type waypoint
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_waypoints_1_desc Work
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_waypoints_1_lat XXXXXXXXXXXXX
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_waypoints_1_lon XXXXXXXXXXXXXXXXX
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_waypoints_1_rad 50
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_waypoints_1_tst XXXXX2
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_waypoints_2__type waypoint
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_waypoints_2_desc Zuhause
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_waypoints_2_lat XXXXXXXXXXXXXXXXX
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_waypoints_2_lon XXXXXXXXXXXXXXXXXXXX
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_waypoints_2_rad 30
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_waypoints_2_tst XXXXXX
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_willQos 1
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_willRetain false
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_willTopic
setstate OwnTracks 2019-05-29 11:57:07 dump_configuration_ws false
setstate OwnTracks 2019-05-29 11:56:31 waypoints__type waypoints
setstate OwnTracks 2019-05-29 11:56:31 waypoints_waypoints_1__type waypoint
setstate OwnTracks 2019-05-29 11:56:31 waypoints_waypoints_1_desc Work
setstate OwnTracks 2019-05-29 11:56:31 waypoints_waypoints_1_lat XXXXXXXXXXXXX
setstate OwnTracks 2019-05-29 11:56:31 waypoints_waypoints_1_lon XXXXXXXXXXXXXXXXX
setstate OwnTracks 2019-05-29 11:56:31 waypoints_waypoints_1_rad 50
setstate OwnTracks 2019-05-29 11:56:31 waypoints_waypoints_1_tst 1XXXXXXXXXX662
setstate OwnTracks 2019-05-29 11:56:31 waypoints_waypoints_2__type waypoint
setstate OwnTracks 2019-05-29 11:56:31 waypoints_waypoints_2_desc Zuhause
setstate OwnTracks 2019-05-29 11:56:31 waypoints_waypoints_2_lat XXXXXXXXXXXXXXX
setstate OwnTracks 2019-05-29 11:56:31 waypoints_waypoints_2_lon XXXXXXXXXXXXXXXX
setstate OwnTracks 2019-05-29 11:56:31 waypoints_waypoints_2_rad 30
setstate OwnTracks 2019-05-29 11:56:31 waypoints_waypoints_2_tst XXXXXXXXXXXXX


sowie:

defmod LiveTracking livetracking
attr LiveTracking owntracksDevice OwnTracks
attr LiveTracking room Live Tracking
attr LiveTracking stateFormat location


Persönlche Daten ausgeXXXXt.  Was meinst Du mit "json2nameValue" auf einfache Form? Gibts kein Beispiel was das livetracking Modul alles an readings erwartet? Hier ist die Doku leider recht dürftig ...

Danke Dir!

Beta-User

Zitat von: Beta-User am 29 Mai 2019, 12:25:14
Mach' mal einen gültigen Wert für autocreate an das IO
"yes" ist nach wie vor kein gültiger Wert! Bitte in die cref zu MQTT2_CLIENT schauen. Da steht:
Zitat
autocreate [no|simple|complex]
if set to simple/complex, at least one MQTT2_DEVICE will be created, and its readingsList will be expanded upon reception of published messages. Note: this is slightly different from MQTT2_SERVER, where each connection has its own clientId.  This parameter is sadly not transferred via the MQTT protocol, so the clientId of this MQTT2_CLIENT instance will be used.
With simple the one-argument version of json2nameValue is added: json2nameValue($EVENT), with complex the full version: json2nameValue($EVENT, 'SENSOR_', $JSONMAP). Which one is better depends on the attached devices and on the personal taste, and it is only relevant for json payload. For non-json payload there is no difference between simple and complex.
Hier scheint es so zu sein, das "yes" mit "complex" gleichgesetzt wird...

Damit sollte sich diese Frage eigentlich gar nicht mehr stellen:
ZitatWas meinst Du mit "json2nameValue" auf einfache Form?

Jedenfalls würde ich davon ausgehen, dass owntracks eine einfache Form des Auspackens des JSON bevorzugt...



Ergänzend würde ich vorschlagen, dass du dir mal das Wiki zu MQTT2_CLIENT anschaust und ein GeneraBridge-MQTT2_DEVICE anlegst. Dabei evtl. die dortige bridgeRegepx so erweitern, dass die Owntracks-Infos jeweils auch in diesem (bzw. ggf. weiteren sinnvollen Devices) landen. Ich kenne Owntracks nicht, daher kann ich von hier aus auch nicht beurteilen, was Sinn macht (v.a. nicht anonymisiert).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

tomleitner

Danke ... nun klappt es. In meinem OwnTracks device habe ich nun lediglich folgendes als readingList:

LiveTracking:owntracks/USERNAME/XXXXXXXXXXXXXXXXX:.* OWNTRACKS

Damit wird das JSON nicht entpackt. Sonst gibts es KEIN anderes reading. Die anderen Readings scheint das livetracking Modul nicht zu mögen.

Nun habe ich Daten im "livetracking" Device. Was mir noch abgeht ist die OwnTracks "inregions" ... d.h. ich definiere im OwnTracks schöne Regions nur im livetracking Modul wird der Zustand in welche Region ich bin nicht übermittelt.

In meinem früheren Owntracks modul wo der JSON geparst wurde, war das schon drinnen ...

Danke jedenfals ... Tom


Beta-User

Hmmm, ich kann da jetzt mangels eigenem Owntracks nicht ganz folgen, aber erst mal schön, dass das klappt.

Wenn du den JSON nur in bestimmten Fällen ausgepackt haben willst (z.B., wenn die inregions kommen), kann man auch sowas mit MQTT2_DEVICE anstellen. Wenn dich das interessiert, such im MQTT-Bereich mal nach den sonoff-IR und -RF-template-Threads, da gibt es (allerdings eher nicht selbsterklärende) Codeschnipsel dazu.

PS: wenn das mit owntracks in der bridgeRegexp paßt, wäre ich für eine Rückmeldung dankbar, dann kann ich das ggf. in das allgemeine Template einpflegen...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Loredo

#9
Zitat von: Beta-User am 29 Mai 2019, 13:49:37
PS: wenn das mit owntracks in der bridgeRegexp paßt, wäre ich für eine Rückmeldung dankbar, dann kann ich das ggf. in das allgemeine Template einpflegen...

Ich hätte hier glaub ich was für den Anfang:


# an owntracks device
name:owntracks_device
desc: A device tracked with OwnTracks
filter:TYPE=MQTT2_DEVICE:FILTER=CID=owntracks.*
order:O_02
par:TRACKER_ID;TrackerID;{ AttrVal("DEVICE","readingList","") =~ m,[^/:]+[/]([^/:]+).*:, ? $1 : undef }
par:DEV_ID;DeviceID;{ AttrVal("DEVICE","readingList","") =~ m,[^/:]+[/][^/:]+[/]([^/:]+).*:, ? $1 : undef }
attr DEVICE icon location_sign
attr DEVICE jsonMap\
  _type:lastUpdateType\
  acc:accuracy\
  alt:altitude\
  batt:batteryPercent\
  bs:batteryState\
  cog:direction\
  conn:connection\
  lat:latitude\
  lon:longitude\
  rad:radius\
  p:pressure\
  t:trigger\
  tid:trackerId\
  tst:timestamp\
  vac:accuracyVertical\
  vel:velocity\
  event__type:lastUpdateType\
  event_acc:event_accuracy\
  event_lat:event_latitude\
  event_lon:event_longitude\
  event_t:event_trigger\
  event_tid:event_trackerId\
  event_tst:event_timestamp\
  event_wtst:event_waypointCreationTimestamp\
  step__type:lastUpdateType\
  step_steps:steps_count\
  step_from:steps_timestampBegin\
  step_to:steps_timestampEnd\
  step_tst:steps_timestampReq\
  beacon__type:lastUpdateType\
  beacon_acc:beacon_accuracy\
  beacon_prox:beacon_proximity\
  beacon_tst:beacon_timestampReq\
  waypoints__type:lastUpdateType\
  waypoints__creator:waypoints_creator\
  config__type:lastUpdateType
attr DEVICE readingList\
  owntracks/TRACKER_ID/DEV_ID:.* { json2nameValue($EVENT,'',$JSONMAP) }\
  owntracks/TRACKER_ID/DEV_ID/event:.* { json2nameValue($EVENT,'event_',$JSONMAP) }\
  owntracks/TRACKER_ID/DEV_ID/step:.* { json2nameValue($EVENT,'step_',$JSONMAP) }\
  owntracks/TRACKER_ID/DEV_ID/beacon:.* { json2nameValue($EVENT,'beacon_',$JSONMAP) }\
  owntracks/TRACKER_ID/DEV_ID/waypoints:.* { json2nameValue($EVENT,'waypoints_',$JSONMAP) }\
  owntracks/TRACKER_ID/DEV_ID/dump:.* { json2nameValue($EVENT,'config_',$JSONMAP) }
attr DEVICE getList\
  location:noArg raw owntracks/TRACKER_ID/DEV_ID/cmd {"_type":"cmd","action":"reportLocation"}\
  steps:noArg raw owntracks/TRACKER_ID/DEV_ID/cmd {"_type":"cmd","action":"reportSteps"}\
  config:noArg raw owntracks/TRACKER_ID/DEV_ID/cmd {"_type":"cmd","action":"dump"}\
  waypoints:noArg raw owntracks/TRACKER_ID/DEV_ID/cmd {"_type":"cmd","action":"waypoints"}
attr DEVICE setList\
  config owntracks/TRACKER_ID/DEV_ID/cmd {"_type":"cmd","action":"setConfiguration","configuration":$EVTPART1}\
  waypoints owntracks/TRACKER_ID/DEV_ID/cmd {"_type":"cmd","action":"setWaypoints","waypoints":{"_type":"waypoints","waypoints":$EVTPART1}\
  action owntracks/TRACKER_ID/DEV_ID/cmd {"_type":"cmd","action":"action",$EVTPART1}
attr DEVICE model owntracks_device
attr DEVICE room OwnTracks


Allerdings klappt kein autocreate. Auch nicht, wenn ich dies als bridgeRegexp hinzufüge:


(owntracks)[/]([^/:]+)[/]([^/:]+).*:.* "$1_$2$3"


Wahrscheinlich kappiere ich aber einfach nicht, wie autocreate überhaupt funktioniert...
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

andre07

Hallo
Kann man das auch mit MQTT2 Server nutzen ich bekomme leider wenn ich unterwegs bin keine Verbindung
zu Fhem in der Owntracks App steht Verbindung wurde getrennt java.io.EOFEException. Port ist natürlich
freigegeben. Habe die Devices local angelegt verbindung da aber sobald auswärts geht es nicht mehr

Andre

Beta-User

Zitat von: andre07 am 01 März 2020, 13:06:53
Port ist natürlich freigegeben.
Das ist eine sehr kurze Kurzfassung...

1. Ohne Portfreigabe dürfte das gar nicht gehen, und mit nur, wenn du
2. für "externe Netze" ein "allowed" definiert hast, das auch was anderes als das lokale Netz zuläßt.

Bitte bei direkter Weiterleitung von irgendwelchen FHEM-Ports UNBEDINGT auf eine saubere Absicherung achten, in der Regel bedeutet das: auch SSL aktivieren; wenn dir nicht klar ist, wie es "richtig" geht: Einfach lassen. Und für von außen zugängliche Dinge: autocreate abschalten.

(@Experten: Sollte ich da was wichtiges vergessen habe: bitte ausdrücklich um Klarstellung!)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

rudolfkoenig

ZitatHabe die Devices local angelegt verbindung da aber sobald auswärts geht es nicht mehr
Wenn unsere Vermutung stimmt, dann sollte eine entsprechende Nachricht im Log zu sehen sein:
Connection refused from the non-local address $caddr:$port as there is no working allowed instance defined for it


Zitat2. für "externe Netze" ein "allowed" definiert hast, das auch was anderes als das lokale Netz zuläßt.
Das ist mAn missverstaendlich, ich versuche es detaillierter:
- ich empfehle eine allowed Instanz anzulegen, was diesem MQTT_SERVER zugewiesen ist, und Benutzer/Passwort gesetzt hat. Auf der anderen Seite muss man Benutzer/Passwort dann auch setzen.
- man kann das umgehen, indem man das allowfrom Attribut setzt, hier sollte man aber ueber die Folgen unbedingt im klaren sein(!)
- weiterhin sollte man das SSL Attribut der MQTT_SERVER setzen, das muss dann auch auf der anderen Seite aktiviert werden.



andre07

#13
Zugriff von aussen habe ich bei mir mit ssl und reverse Proxy
realisiert (passwort geschützt).
Das ich dazu auch noch eine allowed Instanz benötige war mir
nicht klar da ich ja den port auf dem der Mqtt2 Server lauscht nach
aussen freigegeben hatte.
Probier das jetzt mal aus ob dann klappt.
Owntrack versucht eine Verbindung über
tcp://dyn.mynetz.com:1883 aufzubauen ,was ich nicht
ganz verstehe ist warum ich dazu ein allowed
benötige...und wie muss diese konfiguriert sein.
So in etwa
define allowedmqtt2server allowed
attr allowedmqtt2server validFor mqtt2server



Andre




rudolfkoenig

ZitatZugriff von aussen habe ich bei mir mit ssl und reverse Proxy realisiert (passwort geschützt).
Wenn das auch fuer MQTT gilt, dann vergiss alles, was wir gesagt haben, und was ich in den folgenden Zeilen schreibe.

Ich vermute aber, du meinst damit den WEB Zugang fuer FHEMWEB, und das ist fuer den MQTT_SERVER irrelevant.

Um diesen zu sichern musst du (ich wiederhole mich irgendwie):
- eine allowed Instanz anlegen (oder eine Vorhandene verwenden)
- diese mit dem Attribut validFor der MQTT2_SERVER Instanz zuweisen
- hier Benutzer und Passwort setzen
- beim MQTT2_SERVER SSL setzen

=> Damit ist die FHEM-Seite gesichert.

Fehlt noch in Owntrack Benutzername, Passwort und SSL zu aktivieren, laut https://owntracks.org/booklet/features/security/ ist das moeglich (SSL in FHEMWEB entspricht bei Owntrack dem TLS)

Warum das Ganze: Ohne Passwort kann jeder, der dein MQTT Port findet (und danach wird permanent aktiv gesucht, siehe https://www.shodan.io/), bei Dir Aktionen ausloesen. Den meisten geht es dabei nicht mal um deine Daten, sondern man verwendet deine Rechner als Mittel zum naechsten Straftat.
Damit FHEM nach einer Hack-Aktion in den Medien nicht als Sicherheitloch gebrandmarkt wird, und ich als Autor der Module zur Verantwortung gezogen werde, weigern sich bestimmte FHEM Dienste ohne Passwort-Sicherung direkt aus dem Internet erreichbar zu sein.