98_livetracking: CSV data from OwnTracks

git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@19227 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
moises 2019-04-20 09:12:58 +00:00
parent 6964d2aeff
commit fe5d320628
4 changed files with 36 additions and 8 deletions

View File

@ -1,5 +1,6 @@
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
# Do not insert empty lines here, update check depends on it.
- feature: 98_livetracking: CSV data from OwnTracks
- new: 98_Weather: add wundergroundAPI for Weather Underground
- feature: 98_backup: add support for FileLog path
- bugfix: 93_DbLog: fix problem with delta-h/delta-d MySQL if value will be

View File

@ -1,4 +1,4 @@
##############################################################################
##############################################################################
# $Id$
#
# 38_netatmo.pm
@ -5138,10 +5138,10 @@ netatmo_parsePublic($$)
if(defined($device->{measures}->{$module}->{rain_live}))
{
push(@readings_rain, $device->{measures}->{$module}->{rain_live});
push(@readings_rain_1, $device->{measures}->{$module}->{rain_60min});
push(@readings_rain_24, $device->{measures}->{$module}->{rain_24h});
push(@timestamps_rain, $device->{measures}->{$module}->{rain_timeutc});
push(@readings_rain, $device->{measures}->{$module}->{rain_live}) if(defined($device->{measures}->{$module}->{rain_live}));
push(@readings_rain_1, $device->{measures}->{$module}->{rain_60min}) if(defined($device->{measures}->{$module}->{rain_60min}));
push(@readings_rain_24, $device->{measures}->{$module}->{rain_24h}) if(defined($device->{measures}->{$module}->{rain_24h}));
push(@timestamps_rain, $device->{measures}->{$module}->{rain_timeutc}) if(defined($device->{measures}->{$module}->{rain_timeutc}));
next;
}
if(defined($device->{measures}->{$module}->{wind_strength}))
@ -5321,6 +5321,7 @@ netatmo_parsePublic($$)
my $max_rain_24 = -1000;
foreach my $val (@readings_rain_24)
{
next if(!defined($val));
$avg_rain_24 += $val / scalar(@readings_rain_24);
$min_rain_24 = $val if($val < $min_rain_24);
$max_rain_24 = $val if($val > $max_rain_24);

View File

@ -2959,7 +2959,7 @@ sub XiaomiDevice_connectFail($)
Log3 $name, 3, "$name: connection timeout";
readingsSingleUpdate($hash, "state", "disconnected", 1) if($hash->{helper}{ConnectionState} ne "disconnected");
$hash->{helper}{ConnectionState} = "disconnected";
$hash->{helper}{delay} += 60;
$hash->{helper}{delay} += 120;
InternalTimer( gettimeofday() + $hash->{helper}{delay}, "XiaomiDevice_connect", $hash);
return undef;

View File

@ -1,4 +1,4 @@
##############################################
##############################################
# $Id$$$ 2018-11-01
#
# 98_livetracking.pm
@ -887,6 +887,26 @@ sub livetracking_ParseOwnTracks
my ($hash,$data) = @_;
my $name = $hash->{NAME};
#//rcmcronny CSV DECODING
if($data =~ m/[0-9]{2},[A-Z,a-z,0-9]{8},[f|c|a|k|L|l|m|t|T|v]{1},[0-9]{8},[0-9]{8},[0-9]{1,5},[0-9]{1,5},[0-9]{1,5},[0-9]{1,5},[0-9]{1,5}/)
{
Log3 ($name, 4, "$name - CSV encoded payload detected -> ".Dumper($data));
my ($csv_tid, $csv_tst, $csv_t, $csv_lat, $csv_lon, $csv_cog, $csv_vel, $csv_alt, $csv_dist, $csv_trip) = $data =~ m/([0-9]{2}),([A-Z,a-z,0-9]{8}),([f|c|a|k|L|l|m|t|T|v]{1}),([0-9]{8}),([0-9]{8}),([0-9]{1,5}),([0-9]{1,5}),([0-9]{1,5}),([0-9]{1,5}),([0-9]{1,5})/;
$data = '{
"_type": "location",
"t": "'.$csv_t.'",
"tst": "'.(hex($csv_tst)).'",
"tid": "'.$csv_tid.'",
"lat": "'.($csv_lat/1000000).'",
"lon": "'.($csv_lon/1000000).'",
"alt": "'.($csv_alt*10).'",
"vel": "'.$csv_vel.'",
"cog": "'.($csv_cog*10).'",
"dist": "'.$csv_dist.'",
"trip": "'.($csv_trip*1000).'"
}';
}
my $dataset = eval { JSON->new->utf8(0)->decode($data) };
if($@)
{
@ -1164,7 +1184,13 @@ sub livetracking_Notify($$)
$invaliddata = 0;#traccar
Log3 ($name, 4, "$name Detected Traccar data from MQTT device notify");
}
if($invaliddata == 1){
elsif(($dev->{CHANGED}[0] =~ m/[0-9]{2},[A-Z,a-z,0-9]{8},[f|c|a|k|L|l|m|t|T|v]{1},[0-9]{8},[0-9]{8},[0-9]{2},[0-9]{1},[0-9]{2},[0-9]{1},[0-9]{1}/))
{
$invaliddata = 0;#owntracks-csv
Log3 ($name, 4, "$name Detected OwnTracks CSV ENCODED data from MQTT device notify");
}
if($invaliddata == 1)
{
Log3 ($name, 4, "WRONG MQTT TYPE ".Dumper($dev->{CHANGED}[0]));
return undef;
}