Kennt jemand eine Möglichkeit wie man z.B. den aktuellen Aussentemperaturwert von Yahoo Wetter (-2C) an Bus schicken kann?
Zitat von: Gruby schrieb am Di, 05 März 2013 22:25Kennt jemand eine Möglichkeit wie man z.B. den aktuellen Aussentemperaturwert von Yahoo Wetter (-2C) an Bus schicken kann?
Hallo Gruby,
ich hab das Senden der Aussentemperatur von meiner Wärmepumpe an den EIB Bus mit folgender Subroutine in 99_myUtils.pm bei mir gelöst. Wahrscheinlich ist die Umsetzung nicht 100% sauber, aber es funktioniert bei mir, da die Temperatur eh nur mit einer Nachkommastelle auf meinen Tastsensoren angezeigt wird.
sub
value2dpt9($)
{
my $val = shift;
my $sign = 1;
$sign =-1 if($val < 0);
my $absval = abs($val);
my $expo = 0;
if ($absval != 0){$expo =log($absval/2047*100)/log(2);};
if ($expo < 0){$expo=0;};
my $mant = $absval / (2**$expo) *100;
$mant = ((~($mant+1))&0x07FF) if($sign==-1);
my $outval =$mant+2048*$expo;
if ($sign <0){$outval = $outval+32768};
my $hexstr = sprintf("%04X",$outval);
return $hexstr;
}
Ich rufe die Funktion dann so auf:
sub
analyseWPRData($$$)
{
my $setDevice = shift;
my $device = shift;
my $readings = shift;
my $val = ReadingsVal($device,$readings,"-10");
my $hexstr = value2dpt9($val);
fhem("set ".$setDevice." value ".$hexstr);
}
In fhem.cfg ist es dann so implementiert:
define WPR LUXTRONIK2 192.168.178.201 60
define aussenTemperaturEIB notify WPR:ambientTemperature.* {analyseWPRData("EIB_Aussentemperatur","WPR","ambientTemperature")}
define wprSpeichern at +*40:00:00 "wget http://192.168.178.201/proclog -O /opt/fhem/wprlog/`date +'%Y-%m-%d-T%H-%M'`.dta"
Alle 60 Sekunden ruft LUXTRONIK2 die Daten von meiner Wärmepumpe ab, sobald eine Wertänderung vorliegt ruft das notify die Funktion auf. EIB_Aussentemperatur spricht die Gruppenadresse auf meinem EIB Bus an, die ich an meine Tastsensoren zur Anzeige im Display verbunden habe.
Mit der letzten Zeile speichere ich übrigens alle 40 Stunden das 48 Stunden-Log meiner Novelan-Wärmepumpe vom Websever meiner WPR-Net Steuerung.
Gruß, Marcus