mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-01-31 18:59:33 +00:00
65784c33d2
git-svn-id: https://svn.fhem.de/fhem/trunk@640 2b470e98-0d58-463d-a4d8-8e2adae1ed80
124 lines
3.9 KiB
Perl
124 lines
3.9 KiB
Perl
################################################################################
|
|
# Route RAW-Sensor-Data via FHEMWEB/CGI to fhem.pl: Function -> disptach($$$)
|
|
# 99_CGI_RAWMSG
|
|
#
|
|
# Version: 1.0.1
|
|
# Date: 24.05.2010
|
|
# Author: Axel Rieger
|
|
#
|
|
################################################################################
|
|
# Examples for RAW-Sensor-Data
|
|
# WBS = WeB-Sensors
|
|
# WBS:SENSOR-CODE:SENSOR-TYPE:VALUE:TIMESTAMP
|
|
# HMS -> H909801530400F4
|
|
# CUL_WS -> K21500163
|
|
################################################################################
|
|
package main;
|
|
use strict;
|
|
use warnings;
|
|
use Data::Dumper;
|
|
use vars qw(%data);
|
|
use vars qw($__ME);
|
|
################################################################################
|
|
sub CGI_RAWMSG_Initialize($)
|
|
{
|
|
# FHEM Part
|
|
my ($hash) = @_;
|
|
$hash->{Clients} = ":CUL_WS:HMS:WBS:";
|
|
my %mc = (
|
|
"1:CUL_WS" => "^K.....",
|
|
"2:HMS" => "^810e04....(1|5|9).a001",
|
|
"3:WBS" => "^WBS:",
|
|
);
|
|
$hash->{MatchList} = \%mc;
|
|
# CGI Part
|
|
my $cgi_key = "rawmsg";
|
|
my $cgi_name = "CGI_RAWMSG";
|
|
# PRIV-CGI
|
|
my $fhem_url = "/" . $cgi_key ;
|
|
$data{FWEXT}{$fhem_url}{FUNC} = "CGI_RAWMSG_Dispatch";
|
|
$data{FWEXT}{$fhem_url}{LINK} = $cgi_key;
|
|
$data{FWEXT}{$fhem_url}{NAME} = $cgi_name;
|
|
# Create IO-Device for fhem-dispatcher
|
|
$data{$cgi_key}{NAME} = $cgi_name;
|
|
$data{$cgi_key}{MatchList} = \%mc;
|
|
if(!defined($defs{$cgi_name})){
|
|
fhem "define $cgi_name dummy";
|
|
$defs{$cgi_name}{STATE} = "AKTIV 99_CGI_RAWMSG";
|
|
$defs{$cgi_name}{TYPE} = "CGI_RAWMSG";
|
|
fhem "attr $cgi_name comment DUMMY_DEVICE_FOR_99_CGI_RAWMSG";
|
|
}
|
|
|
|
}
|
|
################################################################################
|
|
sub CGI_RAWMSG_Dispatch($$)
|
|
{
|
|
my ($htmlarg) = @_;
|
|
my ($ret_param,$ret_txt,@tmp,$rawmsg,$cgikey);
|
|
Log 5, "CGI_RAWMSG|Dispatch|START: $htmlarg";
|
|
$ret_param = "text/plain; charset=ISO-8859-1";
|
|
$ret_txt = "ERROR;NODATA";
|
|
# print "CGI_RAWMSG|Dispatch: " . Dumper(@_) . "\n";
|
|
# Aufurf: http://[FHEMWEB]/fhem/rawmsg?TEST12345
|
|
# htmlarg = /rawmsg?TEST12345
|
|
if($htmlarg =~ /\?/) {
|
|
@tmp = split(/\?/,$htmlarg);
|
|
$cgikey = shift(@tmp);
|
|
$cgikey =~ s/\///;
|
|
$rawmsg = shift(@tmp);
|
|
# HELP
|
|
if($rawmsg eq "help") {
|
|
no strict "refs";
|
|
$ret_txt = &CGI_RAWMSG_help;
|
|
use strict "refs";
|
|
return ($ret_param, $ret_txt);
|
|
}
|
|
# Check rawmsg
|
|
foreach my $m (sort keys %{$data{$cgikey}{MatchList}}) {
|
|
Log 5, "CGI_RAWMSG|MatchList-RAWMSG: $rawmsg";
|
|
Log 5, "CGI_RAWMSG|MatchList-Key: $m";
|
|
Log 5, "CGI_RAWMSG|MatchList-Val: " . $data{$cgikey}{MatchList}{$m};
|
|
my $match = $data{$cgikey}{MatchList}{$m};
|
|
if($rawmsg =~ m/$match/) {
|
|
Log 5, "CGI_RAWMSG|MatchList-Key FOUND: $m";
|
|
# $ret_txt = "HTMLARG = $htmlarg\n";
|
|
# $ret_txt .= "CGI-KEY = $cgikey\n";
|
|
# $ret_txt .= "RAWMSG = $rawmsg\n";
|
|
# Dummy-Device
|
|
my $name = $data{$cgikey}{NAME};
|
|
my $hash = $defs{$name};
|
|
$hash->{"${name}_MSGCNT"}++;
|
|
$hash->{"${name}_TIME"} = TimeNow();
|
|
$hash->{RAWMSG} = $rawmsg;
|
|
my %addvals = (RAWMSG => $rawmsg);
|
|
my $ret_disp = &Dispatch($hash, $rawmsg, \%addvals);
|
|
if(defined($ret_disp)) {$ret_txt = "OK;" . join(";" ,@$ret_disp) . "\n";}
|
|
else {$ret_txt = "ERROR;NODEVICEFOUND";}
|
|
return ($ret_param, $ret_txt);
|
|
}
|
|
}
|
|
$ret_txt = "ERROR;NODATAMATCH";
|
|
}
|
|
return ($ret_param, $ret_txt);
|
|
}
|
|
|
|
################################################################################
|
|
sub CGI_RAWMSG_help
|
|
{
|
|
my $txt = "Route RAW-Sensor-Data via FHEMWEB/CGI to FHEM\n";
|
|
$txt .= "FHEM.PL Function -> disptach($$$)\n";
|
|
$txt .= "Examples for RAW-Sensor-Data \n";
|
|
$txt .= "WBS = WeB-Sensors\n";
|
|
$txt .= "WBS:SENSOR-CODE:SENSOR-TYPE:VALUE:TIMESTAMP\n";
|
|
$txt .= "HMS -> H909801530400F4\n";
|
|
$txt .= "CUL_WS -> K21500163 \n";
|
|
retrun $txt;
|
|
}
|
|
################################################################################
|
|
sub CGI_RAWMSG_new_iodev
|
|
{
|
|
}
|
|
################################################################################
|
|
1;
|
|
################################################################################
|