Flammtronik last in Fhem reduzieren

Flammtronik an Fhem und andere Steuerungs bzw. Visualisierungs Projekte
Benutzeravatar
jostmario
Administrator
Beiträge: 923
Holzvergaser: Do 28. Jan 2016, 00:11
Bewertung: 147
Wohnort: Zimmern ob Rottweil
Kontaktdaten:

Flammtronik last in Fhem reduzieren

Beitrag #11722 von jostmario » Di 20. Dez 2016, 06:43

Hallo,

wäre es möglich das fhem nur jeden 5. Datensatz der Flammtronik verarbeitet.
Hintergrund ist ja das die Flammtronik im SeKundentakt das Telegramm per RS232 ausgibt was in Fhem relativ viel rechenlast verbraucht.
könnte man die Flammtronik.classdef abändern das nur jeder 5. Datensatz die Funktion Checkframe aufruft.

So sieht die Classdef aktuell aus:

Code: Alles auswählen

reading Spontan match "^(.*\r\n\021)+.*$"
reading Spontan postproc {my $d=$_;CheckFrame("%NAME",$d);}




Gruß Josty
Holzvergaser Orlan 40KW Brennkammer und Turbolatoren von Spikisveni Holzgasverteiler von Jens
Flammtronik umbau mit getrennter Primär/Secundärluft 3200 Liter Puffer
Visualisierung über Raspberry mit FHEM

Bild

Benutzeravatar
jostmario
Administrator
Beiträge: 923
Holzvergaser: Do 28. Jan 2016, 00:11
Bewertung: 147
Wohnort: Zimmern ob Rottweil
Kontaktdaten:

Re: Flammtronik last in Fhem reduzieren

Beitrag #11723 von jostmario » Di 20. Dez 2016, 06:45

Hallo,

habe es auch mal hier im Fhem Forum gepostet.
https://forum.fhem.de/index.php/topic,63090.0.html

Gruß Josty
Holzvergaser Orlan 40KW Brennkammer und Turbolatoren von Spikisveni Holzgasverteiler von Jens
Flammtronik umbau mit getrennter Primär/Secundärluft 3200 Liter Puffer
Visualisierung über Raspberry mit FHEM

Bild

Benutzeravatar
Ralf
Administrator
Beiträge: 327
Holzvergaser: Do 28. Jan 2016, 12:23
Bewertung: 64
Wohnort: Straubenhardt

Re: Flammtronik last in Fhem reduzieren

Beitrag #11725 von Ralf » Di 20. Dez 2016, 08:58

jostmario hat geschrieben:...
Hintergrund ist ja das die Flammtronik im SeKundentakt das Telegramm per RS232 ausgibt was in Fhem relativ viel rechenlast verbraucht.
...


Hallo Mario, meine FT gibt die Daten nur alle 6s aus. Ich hätte gerne, dass ich jede Sekunde die Daten bekomme. Können wir tauschen?
Leider kann ich zu Deiner Frage nichts beitragen. Ich konnte mich mit FHEM immer noch nicht anfreunden. Genau die hohe Rechenlast ist mein Problem damit.

VG
Ralf
Orlan 60kW Holzvergaser, 4000l Puffer, Flammtronik
Geplant: Kesselsteuerung mit Raspberry Pi

Benutzeravatar
Mathias
--Mitglied--
Beiträge: 632
Holzvergaser: Do 28. Jan 2016, 21:13
Bewertung: 105
Wohnort: Herten

Re: Flammtronik last in Fhem reduzieren

Beitrag #11760 von Mathias » Mi 21. Dez 2016, 13:40

Das habe ich auch schon überlegt, die Daten separat vor FHEM sammeln und nur den Mittelwert nach festem Zeitraum weitergegeben.

Das würde ich dazu nutzen, den arduino ebenfalls mit Anweisungen zu füttern und FHEM nur als Visualisierung zu nutzen.

Die Visualisierung von FHEM ist ganz gut, aber mit dem Rest komme ich nicht wirklich klar.
Grüße
Mattes

SolarBayer HVS 40E Holzvergaser, Flammtronik, Große Brennkammer, Gussdüse, 3200l Puffer, 500l Warmwasser Speicher, 730l MAG,
270qm WF, 8 Personen, Solarthermie geplant
Rücklaufanhebung + Heizkreis via Arduino geregelt.

Benutzeravatar
Ralf
Administrator
Beiträge: 327
Holzvergaser: Do 28. Jan 2016, 12:23
Bewertung: 64
Wohnort: Straubenhardt

Re: Flammtronik last in Fhem reduzieren

Beitrag #11765 von Ralf » Mi 21. Dez 2016, 18:58

Wäre es nicht möglich, die Werte per Python Skript von der FT zu holen und nur jeden x-ten Wert an FHEM weiter zu geben?

Hier ist die Klasse, die ich zum Abholen der Daten verwende, vielleicht bringt es Dich weiter:

Code: Alles auswählen

# ===========================================================================
# Class FlammtronikData
# ===========================================================================
import datetime
import os

class FTData:
  def __init__(self, outside, mixforward, bentryt, bexitt, tank1top, tank1middle, tank1bottom, tank2top, tank2middle, tank2bottom):
    self.outside = outside
    self.mixforward = mixforward
    self.bentry = bentryt
    self.bexit = bexitt
    self.tank1 = tank1top
    self.tank2 = tank1middle
    self.tank3 = tank1bottom
    self.tank4 = tank2top
    self.tank5 = tank2middle
    self.tank6 = tank2bottom

    try:
      self.ser = serial.Serial("/dev/ttyUSB0", 38400, timeout=7)
      t = Thread(target = self.getFTData)
      t.setDaemon(True)
      t.start()
    except:
      print "No Serial Port."
 
  def getFTData(self):
    while True:
      flammString = self.ser.readline()
      if len(flammString) == 0:
        self.ser.close()
        self.ser = serial.Serial("/dev/ttyUSB0", 38400, timeout=7)
        continue
      flammString = flammString.translate(None, '\x11\r\n')
      self.values = flammString.split(' ')
      db = MySQLdb.connect(host="localhost", user="IWONTTELLU", passwd="MYSECRET", db="Heater_DB")
      cur = db.cursor()
      cur.execute("INSERT INTO `Heater_DB`.`Heater_Data` (`BoilerTemp`, `ExhaustTemp`, `ChamberTemp`, `PrimaryPower`, `Oxygen`, `SecondaryPower`, `Reduction`, `Losses`, `OutsideTemp`, `HeatingWaterTemp`, `RLA_Forward`, `RLA_Return`, `Tank1`, `Tank2`, `Tank3`, `Tank4`, `Tank5`, `Tank6`, `HeatExchanger`) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);", (self.getBoilerT(), self.getExhaustT(), self.getChamberT(), self.getPrimSpeed(), self.getO2(), self.getSecSpeed(), self.getReduction(), self.getLosses(), self.outside.getTemp(), self.mixforward.getTemp(), self.bexit.getTemp(), self.bentry.getTemp(), self.tank1.getTemp(), self.tank2.getTemp(), self.tank3.getTemp(), self.tank4.getTemp(), self.tank5.getTemp(), self.tank6.getTemp(), self.getHeatExchangerT()))
      db.commit()
      cur.close()
      db.close()

  def getTime(self):
    try:
      time = self.values[0].translate(None, 'T')
      return float(time)
    except:
      return(-1)

  def getBoilerT(self):
    try:
      return(float(self.values[1].translate(None, 'K')))
    except:
      return(-1)

  def getExhaustT(self):
    try:
      et = self.values[2].translate(None, 'A')
      return(int(et))
    except:
      return(-1)

  def getChamberT(self):
    try:
      return(int(self.values[3].translate(None, 'B')))
    except:
      return(-1)

  def getPrimSpeed(self):
    try:
      ps = self.values[4].translate(None, 'P')
      return(int(ps))
    except:
      return(-1)

  def getSecSpeed(self):
    try:
      ss = self.values[6].translate(None, 'S')
      return(int(ss))
    except:
      return(-1)

  def getO2(self):
    try:
      O2 = self.values[5].translate(None, 'O')
      return(float(O2))
    except:
      return(-1)

  def getReduction(self):
    try:
      return(int(self.values[7].translate(None, 'R')))
    except:
      return(-1)

  def getLosses(self):
    try:
      return(float(self.values[8].translate(None, 'V')))
    except:
      return(-1)

  def getHeatExchangerT(self):
    try:
      return(float(self.values[13].translate(None, 'Sp')))
    except:
      return(-1)
# ===========================================================================
# End of Class FlammtronikData
# ===========================================================================
Orlan 60kW Holzvergaser, 4000l Puffer, Flammtronik
Geplant: Kesselsteuerung mit Raspberry Pi

Benutzeravatar
jostmario
Administrator
Beiträge: 923
Holzvergaser: Do 28. Jan 2016, 00:11
Bewertung: 147
Wohnort: Zimmern ob Rottweil
Kontaktdaten:

Re: Flammtronik last in Fhem reduzieren

Beitrag #11820 von jostmario » Do 22. Dez 2016, 17:27

Hallo,

ja hätte das irgendwie so gedacht

reading Spontan match "^(.*\r\n\021)+.*$"
i = i + 1
if i > 5 then
reading Spontan postproc {my $d=$_;CheckFrame("%NAME",$d);}
i = 0
endif


weis aber nicht wie ich das passend schreiben kann.

Gruß josty
Holzvergaser Orlan 40KW Brennkammer und Turbolatoren von Spikisveni Holzgasverteiler von Jens
Flammtronik umbau mit getrennter Primär/Secundärluft 3200 Liter Puffer
Visualisierung über Raspberry mit FHEM

Bild

Benutzeravatar
Ralf
Administrator
Beiträge: 327
Holzvergaser: Do 28. Jan 2016, 12:23
Bewertung: 64
Wohnort: Straubenhardt

Re: Flammtronik last in Fhem reduzieren

Beitrag #11822 von Ralf » Do 22. Dez 2016, 18:53

Hallo Mario,
das Prinzip sollte irgendwie so funktionieren. Kann man in FHEM auch Schleifen programmieren? So weit ich weiß, kann man doch Skripte implementieren, oder? Das Python Skript wäre kein Problem. Ich habe nur nicht die geringste Ahnung, wie man es in FHEM implementiert.

VG
Ralf
Orlan 60kW Holzvergaser, 4000l Puffer, Flammtronik
Geplant: Kesselsteuerung mit Raspberry Pi

Benutzeravatar
Mathias
--Mitglied--
Beiträge: 632
Holzvergaser: Do 28. Jan 2016, 21:13
Bewertung: 105
Wohnort: Herten

Re: Flammtronik last in Fhem reduzieren

Beitrag #11836 von Mathias » Fr 23. Dez 2016, 07:03

Ist FHEM nicht in Perl geschrieben?

Man müsste die Daten von der FT entgegen nehmen und addieren und sich merken, wie oft man addiert hat.

Nach x mal dann die Daten weiter geben und Zähler und Summe zurück setzen.

Schleife wäre aber nicht so gut, muss mit dem Ereignis, Daten von der ft ausgeführt werden
Grüße
Mattes

SolarBayer HVS 40E Holzvergaser, Flammtronik, Große Brennkammer, Gussdüse, 3200l Puffer, 500l Warmwasser Speicher, 730l MAG,
270qm WF, 8 Personen, Solarthermie geplant
Rücklaufanhebung + Heizkreis via Arduino geregelt.

Benutzeravatar
jostmario
Administrator
Beiträge: 923
Holzvergaser: Do 28. Jan 2016, 00:11
Bewertung: 147
Wohnort: Zimmern ob Rottweil
Kontaktdaten:

Re: Flammtronik last in Fhem reduzieren

Beitrag #11853 von jostmario » Fr 23. Dez 2016, 14:15

Hallo,

ja fhem ist mit Perl Programmiert wovon ich leider wenig Ahnung habe damals hat ja Hartmut viel geholfen.

Gruß Josty
Holzvergaser Orlan 40KW Brennkammer und Turbolatoren von Spikisveni Holzgasverteiler von Jens
Flammtronik umbau mit getrennter Primär/Secundärluft 3200 Liter Puffer
Visualisierung über Raspberry mit FHEM

Bild


Zurück zu „Raspberry , FHEM , Arduino etc.“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast