Hauptmenü

Pelletvorrat berechnen

Begonnen von Haus-Andi, 08 Februar 2020, 17:21:47

Vorheriges Thema - Nächstes Thema

Haus-Andi

Hallo

Mein Ziel: "Ich möchte eine Anzeige meines Pelletvorrates habe"
Irgendwie sehe ich aber vor lauter Code die Lösung nicht mehr.

Mittels dem Modul "HourCounter" habe ich mir ein userReadings "Tagesverbrauch in kg" gebaut. Zusätzlich habe ich ein Dummy angelegt "Pelletlager", in dem ich nun die Berechnungen anstellen möchte: vor dem zurücksetzten der Tageswerte im HourCounter (Tagesverbrauch), soll der Wert am Vorrat abgezogen werden.

List Pelletlager:
Internals:
   CFGFN     
   FUUID      5e3ed1b0-f33f-fbd2-e140-1dad4d6ea14cb579
   NAME       Pelletlager
   NR         12513
   STATE      ???
   TYPE       dummy
   Helper:
     DBLOG:
       Lieferung:
         DBLogging:
           TIME       1581178423.9503
           VALUE      2000
       Vorrat:
         DBLogging:
           TIME       1581176539.29118
           VALUE      2000
   READINGS:
     2020-02-08 17:13:43   Lieferung       2000
     2020-02-08 16:42:19   Vorrat          2000
Attributes:
   readingList Vorrat Lieferung
   room       90_Heizung


Ab da stehe ich etwas im abseits, ich brauche da etwas nachhilfe.
Vielen Dank
Andi

Edit: (So stelle ich mir das vor)
23:58 -> Pelletlager:Vorrat - HZG_Betriebszeit:Tagesverbrauch = Pelletlager:Vorrat

nur wie setze ich das nun in einem "at" um?
Raspberry Pi+Enocen Pi
Thermokon SR04
Micropelt
USB to 1-Wire

Panger1337

Hi Andi

sowas ähnliches habe ich mir für die Berechnung meines Heizölverbrauchs gebastelt.

Hoffe ich kann dir damit etwas helfen.

Mein define sieht wie folgt aus
define heizoelverbrauch_diffberechnen at *23:55:00 {my $d1=ReadingsVal("ecometer","morgenstand",0);;my $d2=ReadingsVal("ecometer","abendstand",0);;my $d3=$d2-$d1;;fhem ("setreading ecometer tagesdifferenz $d3");;}

Funktioniert wie folgt:
ich definiere Werte mit denen ich dann berechnen kann, also $d1 ist zum Beispiel der morgendliche Stand meines Heizöltanks und $d2 der Abendstand. Die Differenz kann ich dann berechnen, dass ist dann $d3 und das kann ich wiederrum zurückschreiben.

Bei dir wäre es dann
$d1 wäre der alte Vorrat
$d2 der Tagesverbrauch
neuer Vorrat $d3 wäre dann $d1 minus $d2

Bekommst du das mit den Infos dann selbst zusammengeschrieben?

Grüße
Panger
Chromebox 3 mit 16GB RAM und 128GB SSD als FHEM Instanz
10x TX29DTH, WLAN Gateway PCA301 und LaCrosse, IR Lesekopf für Stromzähler, WLAN Gateway für Onewire (Heizung)
Modbus Heizung und PV, Wetter, Abfall etc
Weiterer Ausbau: TBD

Haus-Andi

#2
Hallo Panger

Danke für die Antwort, leider geht da irgendwas noch nicht so ganz:
*23:55:00 {my $d1=ReadingsVal("Pelletlager","Vorrat",0);my $d2=ReadingsVal("HZG_Betriebszeit","Tagesverbrauch",0);my $d3=$d1-$d2;fhem ("setreading Pelletlager neuerVorrat $d3");}

Bei der erstmaligen Ausführung macht er die Berechnung richtig, bei der 2. Ausführungen wird plötzlich der ganze Vorrat negativ, d.h. die Variable "neuerVorrat" wird plötzlich als "-2000" kg angezeigt. Ich gehe davon aus, dass der Fehler nicht beim fhem sondern bei meiner "Logik" oder "Verständis" zu suchen sein wird.

Ich bleibe dran
Danke

Edit:
Bin ich doof, als ich beim Tagesverbrauch die "kg" entfernt habe, hat es plötzlich funktioniert und rechnet jetzt auch richtig ab.
Vielen Dank für die Hilfe
Andi
Raspberry Pi+Enocen Pi
Thermokon SR04
Micropelt
USB to 1-Wire

Frank_Huber

Du liest Vorrat ein und schreibst neuerVorat zurück.
Vorrat hat also bei der zweiten Ausführung den alten Stand.

Gesendet von meinem Doogee S60 mit Tapatalk


Haus-Andi

Nochmals vielen Dank

Jetzt kann ich den aktuellen Pelletvorrat auch auf meinem "Heizungs-Floorplan" anzeigen lassen und alles ist so wie gewünscht. Ich hoffe nun das es um Mitternacht auch ausgeführt wird.
Ich melde mich morgen nochmals.

Trotz der vielen Einträge hier im Forum und auch via das Wicki hätte ich das nie hin gekriegt, weil ich das mit den "$Sx"-Variablen einfach nicht begriffen habe.

Vielen Dank und allen noch einen schönen Abend
Andi


Raspberry Pi+Enocen Pi
Thermokon SR04
Micropelt
USB to 1-Wire

Wzut

Zitat von: Haus-Andi am 09 Februar 2020, 17:51:15
Bin ich doof, als ich beim Tagesverbrauch die "kg" entfernt habe, hat es plötzlich funktioniert und rechnet jetzt auch richtig ab.
genau aus dem Grund ziehe ich immer ReadingsNum dem so beliebtem ReadingsVal vor :)
und bedenke : Vorrat != neuerVorrat
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Panger1337

Hi

freut mich sehr dass ich als "Neuling" was produktives beisteuern konnte.

Ich weiß noch wie lange ich für die Lösung gesucht habe um meinen Heizölverbrauch zu berechnen...

Im Kopf ist das einfach auszurechnen und man weiß auch direkt was man berechnen muss, aber das dann umzusetzen ist teilweise etwas herausfordernd ;-)

Grüße
Panger
Chromebox 3 mit 16GB RAM und 128GB SSD als FHEM Instanz
10x TX29DTH, WLAN Gateway PCA301 und LaCrosse, IR Lesekopf für Stromzähler, WLAN Gateway für Onewire (Heizung)
Modbus Heizung und PV, Wetter, Abfall etc
Weiterer Ausbau: TBD

Haus-Andi

Hallo zusammen

Nochmals ein kurzes Statment zum ganzen: es funktioniert jetzt einwandfrei, anscheinend hat die "kg" Angabe wirklich die ganze Mathematik durcheinander gewirbelt.
Vielen Dank für die Hilfestellung.

Zitat von: Panger1337 am 11 Februar 2020, 09:16:59
.....
Im Kopf ist das einfach auszurechnen und man weiß auch direkt was man berechnen muss, aber das dann umzusetzen ist teilweise etwas herausfordernd ;-)
....

Das ist genau das Thema, ich weiss gar nicht mehr wie lange ich versucht habe diese Infos zu suchen und vorallem dann auch noch zu begreifen was ich machen muss. Da ich Handwerker bin und nicht IT-Spezialist fällt mir das verstehen da manchmal etwas gar schwer. Wenn man es mal gesehen wie es mit dem "zuweisen" zu den Variablen geht, ist es kein grosses Thema mehr.

Nochmals vielen Dank
Andi
Raspberry Pi+Enocen Pi
Thermokon SR04
Micropelt
USB to 1-Wire