Hallo
Habe mit Hilfe einiger personen meine Flammtronik ( http://www.flammtronik.de/ ) in Fhem eingebunden.
habe dies erst mal mit dem ECMD Modul realisiert so das ich dann im Wohnzimmer per RSS die Daten meines Holzvergasers sehen kann.
dazu steht in der Flammtronik.classdef folgendes:
Zitatreading Spontan match "^(.*\r\n\021)+.*$"
reading Spontan postproc {my $d=$_;CheckFrame("%NAME",$d);}
und in der 99_myUtils.pm dieses hier:
Zitatpackage main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
my $NewMailtime = time;
}
sub ReportItems($$)
{
my %ItemNotes = (
"T" => "Laufzeit",
"K" => "Kesseltemp",
"A" => "Abgas",
"B" => "Brennkammer",
"PL" => "Primaerluefter",
"O" => "O2",
"S" => "Sekundaerluefter",
"R" => "Ruecknahme",
"V" => "Verlust",
"Rt" => "Rt",
"Ra" => "Ra",
"P" => "Pumpe",
"Z" => "status",
"Sp" => "Speicher",
"w" => "CAN_T1",
"x" => "CAN_T2",
"y" => "CAN_T3",
"z" => "CAN_T4",
"a" => "Temp_a",
"b" => "Temp_b",
"c" => "Temp_c",
"d" => "Temp_d",
"e" => "Temp_e",
"f" => "Temp_f",
"g" => "Temp_g",
"h" => "Temp_h");
my $name = shift;
my %items = %{shift();};
my $hash = $defs{$name};
my @KeysInLine = keys(%items);
for (my $i=0; $i < @KeysInLine; $i++)
{
my $Key = $KeysInLine[$i];
my $Notation = $ItemNotes{$Key};
my $Value = $items{$Key};
readingsSingleUpdate($hash, $Notation, $Value,1);
}
# Correct some of the values by special calculation
}
sub CorrectTemp_a($)
{
my $Temp_a = shift;
$Temp_a -= 2;
return $Temp_a;
}
sub CorrectRt($)
{
my $Rt = shift;
$Rt -= 2;
return $Rt;
}
sub CorrectTemp_d($)
{
my $Temp_d = shift;
$Temp_d -= 3;
return $Temp_d;
}
sub CorrectCAN_T4($)
{
my $CAN_T4 = shift;
$CAN_T4 += 3;
return $CAN_T4;
}
sub CalcItems($)
{
my $itemRef = shift;
foreach my $key(keys %$itemRef)
{
if ($key eq "a") { $itemRef->{$key}=CorrectTemp_a($itemRef->{$key}); }
elsif ($key eq "Rt") { $itemRef->{$key}=CorrectRt($itemRef->{$key}); }
elsif ($key eq "d") { $itemRef->{$key}=CorrectTemp_d($itemRef->{$key}); }
elsif ($key eq "z") { $itemRef->{$key}=CorrectCAN_T4($itemRef->{$key}); }
}
}
sub CheckLine($$)
{
my $name = shift;
my $line = shift;
my $hash = $defs{$name};
# make sure it's a single line
if ($line=~/(\n|\r|\021)/)
{
die "CheckLine can only manage single lines!!";
}
# Pumpe and Primaerluefter have both "P" as key, so change Primaerluefter to PL
$line =~ s/P(\d{3})/PL$1/;
# divide into hash-table of [key,value] and take undetected rest into extra var for check
my %items = $line=~/([A-Za-z]+)([\d.]+)\W*/g;
my $rest=$'; #';
CalcItems(\%items);
ReportItems($name,\%items);
if ($rest ne '') { Log3 $hash,5,"Unknown rest of line: $rest" };
Log3 $hash,5,"CheckLine finished.";
}
sub CheckFrame($$)
{
my $name = shift;
my $frame = shift;
my $hash = $defs{$name};
# divide into single lines and take undetected rest in extra var
my @lines = $frame=~/(.*)\r\n\021/g;
my $rest=$'; #';
foreach(@lines) { my $line=$_; CheckLine($name,$line); };
if ($rest ne '') { Log3 $hash,5,"Unknown rest of frame: $rest" };
Log3 $hash,5,"CheckFrame finished.";
}
1;
Da jetzt schon einige User aus dem Holzvergaser-Forum. es so nach meiner Anleitung nachgebaut haben würde ich gerne versuchen dazu ein Modul in Fhem zu verfügung zu stellen.
Hätte jemand Zeit mir dabei zu Helfen hab bis jetzt noch nie etwas in diese richtung gemacht wäre über jede Hilfe evtl per Teamviewer dankbar.
http://www.holzvergaser-forum.de/index.php/forum/flammtronik/51002-flammtronik-an-raspberry-diskussions-thread?limitstart=0
Gruß Josty
Zitat von: ThreadtitelHilfe beim erstellen eines Modules
Das fragst Du allen ernstes im Bereich "Anfängerfragen"?
Ich würde mal ins fhemwiki schauen. Da ist das Erstellen eines Moduls ziemlich gut beschrieben.
Gesendet von iPhone mit Tapatalk