FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: jostmario am 29 November 2018, 23:31:01

Titel: Setreading mit 2 Werten
Beitrag von: jostmario am 29 November 2018, 23:31:01
Hallo,

wie Kann ich denn dem Reading LaufzeitEnergie die beiden Werte übergeben.
so funktioniert es nicht, so schreibt er nur den Text ins reading.


$data{boiler_tot}   = sprintf("%.0f",$data{boiler_tot});
$data{Energie_Erzeugt} =  $data{Energie_Ende} - $data{Energie_Start};

fhem "setreading HVLaufzeitX LaufzeitEnergie $data{boiler_tot} $data{Energie_Erzeugt}";


Gruß Josty
Titel: Antw:Setreading mit 2 Werten
Beitrag von: herrmannj am 29 November 2018, 23:45:33
fhem sprintf( "setreading HVLaufzeitX LaufzeitEnergie %s %s", $data{boiler_tot}, $data{Energie_Erzeugt});
Titel: Antw:Setreading mit 2 Werten
Beitrag von: jostmario am 29 November 2018, 23:54:09
Hallo,

dann sieht das reading so aus:

LaufzeitEnergie         %s %s", $data{boiler_tot}, $data{Energie_Erzeugt}      2018-11-29 23:50:30


Gruß Josty
Titel: Antw:Setreading mit 2 Werten
Beitrag von: Otto123 am 30 November 2018, 10:21:44
Hallo,

Wo hast du den Code denn drin? Das Problem ist, deine Variablen werden so nicht aufgelöst.

Du kannst es mit concatenation versuchen.
Deinen Text umzuschreiben bekomme ich leider am Tablet so auf die schnelle nicht hin.
Auf meiner Webseite findest du aber meine Notizen zu dem Thema.

Gruß Otto
Titel: Antw:Setreading mit 2 Werten
Beitrag von: jostmario am 30 November 2018, 11:56:49
Hallo,

Hab den Text in einem Notify.

Die letzte Zeile ist die entscheidende die nicht funktioniert so.


HVStatus {
  if("$EVENT" eq "AN") {
   $data{boiler_last} = time();
     fhem "setreading HVLaufzeitX VorVorVorLetzteLaufzeit [HVLaufzeitX:VorVorLetzteLaufzeit]";
   $data{boiler_letzte} = ReadingsVal ("HVLaufzeitX","VorLetzteLaufzeit",0);
   fhem "setreading HVLaufzeitX VorVorLetzteLaufzeit $data{boiler_letzte}";
   $data{boiler_letzte} = ReadingsVal ("HVLaufzeitX","LetzteLaufzeit",0);
   fhem "setreading HVLaufzeitX VorLetzteLaufzeit $data{boiler_letzte}";
   $data{boiler_letzte} = ReadingsVal ("HVLaufzeitX","Laufzeit",0);
   fhem "setreading HVLaufzeitX LetzteLaufzeit $data{boiler_letzte}";
   fhem "setreading HVLaufzeitX Laufzeit 0";
   $data{Energie_Start} = ReadingsVal ("myuvr_messuebersicht","Energiemenge",0);
   fhem "setreading HVLaufzeitX EnergiemengeStart [myuvr_messuebersicht:Energiemenge]";
    } elsif("$EVENT" eq "AUS") {
   $data{boiler_letzte} = ReadingsVal ("HVLaufzeitX","Auszeit",0);
   $data{boiler_min} = (time()-$data{boiler_last})/60*1;
   $data{boiler_rv} = ReadingsVal ("HVLaufzeitX","Laufzeit",0);
   $data{boiler_tot} = $data{boiler_rv}+$data{boiler_min};
   $data{boiler_tot}   = sprintf("%.0f",$data{boiler_tot});
   fhem "setreading HVLaufzeitX Laufzeit $data{boiler_tot}";
    $data{boiler_rechne} = ReadingsVal ("HVLaufzeitX","Gesamtlaufzeit",0);
    $data{boiler_rechne} = $data{boiler_rechne} + $data{boiler_tot};
   fhem "setreading HVLaufzeitX Gesamtlaufzeit $data{boiler_rechne}";
   $data{Energie_Ende} = ReadingsVal ("myuvr_messuebersicht","Energiemenge",0);
   $data{Energie_Start} = ReadingsVal ("HVLaufzeitX","EnergiemengeStart",0);
   fhem "setreading HVLaufzeitX VorVorVorLetzteLaufzeit [HVLaufzeitX:VorVorLetzteLaufzeit]";
   fhem "setreading HVLaufzeitX EnergiemengeEnde [myuvr_messuebersicht:Energiemenge]";
   $data{Energie_Erzeugt} =  $data{Energie_Ende} - $data{Energie_Start};
   fhem "setreading HVLaufzeitX VorVorVorLetzteEnergieErzeugt [HVLaufzeitX:VorVorLetzteEnergieErzeugt]";
   fhem "setreading HVLaufzeitX VorVorLetzteEnergieErzeugt [HVLaufzeitX:VorLetzteEnergieErzeugt]";
   fhem "setreading HVLaufzeitX VorLetzteEnergieErzeugt [HVLaufzeitX:LetzteEnergieErzeugt]";
  fhem "setreading HVLaufzeitX LetzteEnergieErzeugt [HVLaufzeitX:EnergieErzeugt]";
   fhem "setreading HVLaufzeitX EnergieErzeugt $data{Energie_Erzeugt}";
   fhem "setreading HVLaufzeitX LaufzeitEnergie $data{boiler_tot} $data{Energie_Erzeugt}";
   fhem sprintf( "setreading HVLaufzeitX LaufzeitEnergie %s %s", $data{boiler_tot}, $data{Energie_Erzeugt});
 
}
}


Gruß Josty
Titel: Antw:Setreading mit 2 Werten
Beitrag von: CoolTux am 30 November 2018, 12:10:05
Entweder bin ich blind oder Du hast den Hash %data gar nicht deklariert. Kann mir nicht wirklich vorstellen das es überhault irgendwie geht.
Titel: Antw:Setreading mit 2 Werten
Beitrag von: jostmario am 30 November 2018, 12:45:24
Hallo,

jetzt hat es so doch geklappt er hat die zwei Werte in das einereading geschrieben.
Wie sollte ich denn $data deklarieren wobei es funktioniert jetzt einwandfrei mit dieser Zeile.
fhem sprintf( "setreading HVLaufzeitX LaufzeitEnergie %s %s", $data{boiler_tot}, $data{Energie_Erzeugt});

hatte das manuell auszulösen versucht da ging es nicht.
Jetzt wo der Holzvergaser tatsächlich an und aus ging hat er es gesetzt.

Dankeschön
Gruß Josty
Titel: Antw:Setreading mit 2 Werten
Beitrag von: CoolTux am 30 November 2018, 12:51:04
Zitat von: jostmario am 30 November 2018, 12:45:24
Wie sollte ich denn $data deklarieren wobei es funktioniert jetzt einwandfrei mit dieser Zeile.

Ich weiß nicht wirklich wie ich mit der Frage umgehen soll.
Ich belasse es einfach mal dabei. Scheint ja zu funktionieren.


Grüße
Titel: Antw:Setreading mit 2 Werten
Beitrag von: herrmannj am 30 November 2018, 13:11:13
Data ist in fhem.pl ...ist so ok
Titel: Antw:Setreading mit 2 Werten
Beitrag von: CoolTux am 30 November 2018, 13:36:50
Zitat von: herrmannj am 30 November 2018, 13:11:13
Data ist in fhem.pl ...ist so ok

Ah also eine globaler Hash. Na dann.
Titel: Antw:Setreading mit 2 Werten
Beitrag von: CoolTux am 30 November 2018, 13:38:40
Habs gefunden. Ist anscheinend sogar für den User gedacht
Zitat
use vars qw(%data);             # Hash for user data
Also noch nicht mal missbrauch