Kessel- und Heizungssteuerung mit Raspberry Pi und Python

Benutzeravatar
Stefan
...putzt hier nur
Beiträge: 2619
Holzvergaser: Do 28. Jan 2016, 00:08
Bewertung: 605
Wohnort: Ostelsheim

Re: Kessel- und Heizungssteuerung mit Raspberry Pi und Python

Beitrag #12001 von Stefan » Mo 26. Dez 2016, 21:51

Hallo Ralf,
ist auch nicht mein Spezialgebiet, aber dass das CAN Modul per Phasenanschnitt arbeitet weiß ich dann doch. ;)
Und bezüglich des "Anlaufstroms" würde ich mir bei laufendem Motor jetzt auch keine Sorgen machen, der fließt ja nur so lange der Rotor steht bzw. weit unter Nenndrehzahl läuft. Diese "gepulste" Leistungsregelung war bei vielen Solarreglern Standard für die Umewälzpumpenansteuerung. Eiffizienzpumpen mögen das aber nicht so sehr, HE Pumpen erst recht nicht. :mrgreen:
Gruß vom Stefan (aka Hobbele ),
der auch ernst kann, wenn es mal gar nicht anders geht... ;)

Orlan 40 kW Holzvergaser, 4k Puffer, 10 qm Solar Flachkollektor, 2 PV Anlagen zusammen 107 kwp, Eigenbau- Frischwasserstation, bisher kein Backup, BHKW in Planung.

Benutzeravatar
Timm
--Mitglied--
Beiträge: 54
Holzvergaser: Fr 12. Feb 2016, 01:59
Bewertung: 16
Wohnort: Naumburg

Re: Kessel- und Heizungssteuerung mit Raspberry Pi und Python

Beitrag #12006 von Timm » Di 27. Dez 2016, 06:15

Ralf hat geschrieben:Mit dem elektronischen Dimmer zeigt das original Gebläse vom Orlan ein komisches verhalten. Er startet bei 7% aus dem Stand heraus. Dann lässt er sich bis ca. 30% gut nach oben regeln. Ab ca. 30% scheint der Motor dann plötzlich auf volle Drehzahl zu gehen.


Ist normal für einen Lüfter mit Kondensatormotor. Allerdings würde ich den Lüfter immer mit 100% anlaufen lassen und dann nach einigen Sekunden runterschalten. Sonst kann es passieren, dass der Motor nicht anläuft, sondern nur brummt.

Steuermodule, die 0..100% anbieten, rechnen das intern auf 10 bis 40% oder so um.

Ralf hat geschrieben:Ich habe dann mal was anderes versucht. Ich habe den Motor an ein Solid-State-Relais angeschlossen und per Raspberry das Relais gepulst geöffnet. D.h. 0.01s auf, 0.99s zu oder 0.50s auf und 0.50s zu etc. Rein von der Luftmenge, die das Gebläse dabei fördert, scheint das die bessere und feinfühligere Regelung zu sein. Aber der Motor pulst natürlich hörbar auch die Luft pulst etwas, im gleichen Takt.


Funktioniert bei meinen Pumpen (Heizung, Solar) wunderbar zwischen 30 und 100%. Funktioniert nicht bei meinem Lüfter, da er dabei sehr laut wird. Klingt ungesund.

Lüfter => Phasenanschnitt
Pumpen => Schwingungspaket

Bei Schwingungspaket ist darauf zu achten, dass immer Vollwellen geschaltet werden. Bei Deiner Ansteuerung kann es passieren, dass z.B. 3 positive Halbwellen und 2 negative geschaltet werden. Dann bekommt der Motor einen Gleichspannungsanteil. Da die Motorinduktivität für Gleichspannung einen niedrigen Widerstand aufweist, fließen hohe Pulsströme, Du hast hohe Windungsverluste, erhöhten Stromverbrauch und Erwärmung der Motorwicklung und Du bekommst eine Vormagnetisierung des Motors.

Um das zu vermeiden, musst Du den Nulldurchgang detektieren, das Schwingungspaket darauf synchronisieren und immer Vollwellen schalten.
Attack DPX 25 Standard - Umbau auf eigene Steuerung - 60 lfm Fußleistenheizung im Blockbohlenhaus - 10m² Solar

Benutzeravatar
Gerrit
--Mitglied--
Beiträge: 36
Holzvergaser: Fr 29. Jan 2016, 20:19
Bewertung: 4

Re: Kessel- und Heizungssteuerung mit Raspberry Pi und Python

Beitrag #12008 von Gerrit » Di 27. Dez 2016, 09:47

Das Problem dieser Welt ist, dass die intelligenten Menschen so voller Selbstzweifel und die Dummen so voller Selbstvertrauen sind. (Charles Bukowski)

Benutzeravatar
digger
--Mitglied--
Beiträge: 233
Holzvergaser: Do 11. Feb 2016, 12:44
Bewertung: 38
Wohnort: Koberg

Re: Kessel- und Heizungssteuerung mit Raspberry Pi und Python

Beitrag #12084 von digger » Mi 28. Dez 2016, 21:08

Moin,
ein Relais macht das Pulsen nicht lange mit. Musst dort mit einer Thyristor-Schaltung arbeiten. Diese kann das ab.
mfg
Nur Hubraum zählt

Orlan Super 60KW mit Eigenbau-Brennkammer in Sarg-form
11qm Solar
4000l Puffer
Holzgasteiler und Düsenkästen von Sven
Gussdüsen von Friedrich

und immer dreckige Finger von Ami-Motoren 8-)

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

Re: Kessel- und Heizungssteuerung mit Raspberry Pi und Python

Beitrag #12163 von Ralf » So 1. Jan 2017, 12:40

Ich habe inzwischen ein paar mehr Versuche mit dem elektronischen Dimmer gemacht. Resultat: Das FT CAN-Bus Modul steuert die Gebläse weitaus sauberer als dieser Dimmer. Bei dem Dimmer gibt es einige Leistungsbereiche, die ich gar nicht verwenden kann, weil sich das Gebläse da gar nicht gut anhört. Durch ein bissel Gefriggel bei der Programmierung kann ich jetzt fast das gesamte Leistungsband von 0-100% abdecken. Das geht aber nur durch eine Kombination von Dimmen und Ein-Aus schalten. Ob der Dimmer und die Gebläse das auf Dauer mitmachen, wird sich zeigen.
Leider habe ich kein Oszilloskop um den Unterschied in der Steuerung zwischen dem Dimmer und dem FT Modul zu analysieren. Es würde mich schon mal interessieren, wie die FT die Gebläse doch relativ sauber steuert.
Wenn es mir wieder etwas besser geht, werde ich mal die Sekundärregelung mit dem Dimmer und dem Raspy am Ofen testen.

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

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

Re: Kessel- und Heizungssteuerung mit Raspberry Pi und Python

Beitrag #12453 von Ralf » Sa 7. Jan 2017, 18:27

Ich bin mit dem elektronischen Dimmer nicht zufrieden. Die Steuerung die ich dafür gepfrimelt habe ist Pfusch. Es ist nur eine Frage der Zeit, bis sich entweder ein Gebläse oder der Dimmer selbst verabschiedet. Außerdem nervt mich das pulsende Geräusch des Gebläses. Ich vermute, dass der Dimmer keine Vollwellen-Phasenanschnittssteuerung macht. Nachprüfen kann ich es nicht.
Es gibt noch eine andere Möglichkeit. Man könnte auch dieses Teil verwenden. Gust hatte vor einiger Zeit mal geschrieben, dass er dieses Teil verwendet und alles ok läuft damit. Mein Problem ist jedoch, dass ich zur Steuerung eine 470kOhm Poti benötige. Und wie steuere ich vom Raspberry den Poti an? Die Lösung könnte evtl. dieses Modul sein. Das ist ein Dimmer der per PWM angesteuert wird. Da wir aber mal wieder bei PWM sind, ist mir was anderes eingefallen. Ich habe noch die zwei 12V Gebläse, aus meiner frühen Holzheizerzeit. Die kann man auch per PWM steuern. Diese Gebläse hatte ich damals nur ersetzt, weil sie mit der FT nicht mehr so gut funktionierten. Allerdings hatte ich damals das PWM Signal mit dem Arduino erzeugt, weil es mit dem Raspberry irgendwie nicht so richtig funktioniert hatte. Jetzt habe ich ich es nochmal mit dem Raspberry direkt versucht und Software-PWM verwendet, weil der Raspberry nur einen Hardware-PWM Pin hat. Es hat auf Anhieb funktioniert. Ich konnte das Gebläse von 7-100% wunderbar steuern.
Das erleichtert nun vieles. Somit brauche ich neben dem Raspberry nur das Relaismodul und ein Modul für die Lambdasonde. All der andere Schnickschnack kann verschwinden. Hier mal das Skript, das ich zum Testen verwendet habe.

Code: Alles auswählen

import os
import time
import wiringpi
import threading
import time

# ===========================================================================
# Class SetMotorSpeed
# ===========================================================================
class SetMotorSpeed:
  def __init__(self):
    wiringpi.wiringPiSetup()
    wiringpi.pinMode(1, 2) # sets WP pin 1 to PWM mode 
    wiringpi.softPwmCreate (1, 0, 100)
    self.speed = 0
    self.stopSig = 0
    self.controlSpeed()

  def controlSpeed(self):
    wiringpi.softPwmWrite (1, self.speed)
    self.timerThread = threading.Timer(1, self.controlSpeed) #Starte Endlosschleife in eigenem Thread
    if(self.stopSig == 0):
      self.timerThread.start()

  def setSpeed(self, speed):
    self.speed = speed

  def __del__(self):
    self.stopSig = 1
# ===========================================================================
# End of Class SetMotorSpeed
# =========================================================================== 
ms = SetMotorSpeed()
while(True):
  speed = input("Speed:")
  ms.setSpeed(speed)


VG
Ralf


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

Benutzeravatar
Gust
Bereichsmoderator
Beiträge: 565
Holzvergaser: Do 28. Jan 2016, 13:27
Bewertung: 168

Re: Kessel- und Heizungssteuerung mit Raspberry Pi und Python

Beitrag #12740 von Gust » Fr 13. Jan 2017, 20:01

Ralf hat geschrieben:Ich bin mit dem elektronischen Dimmer nicht zufrieden. Die Steuerung die ich dafür gepfrimelt habe ist Pfusch. Es ist nur eine Frage der Zeit, bis sich entweder ein Gebläse oder der Dimmer selbst verabschiedet. Außerdem nervt mich das pulsende Geräusch des Gebläses. Ich vermute, dass der Dimmer keine Vollwellen-Phasenanschnittssteuerung macht. Nachprüfen kann ich es nicht.
Es gibt noch eine andere Möglichkeit. Man könnte auch dieses Teil verwenden. Gust hatte vor einiger Zeit mal geschrieben, dass er dieses Teil verwendet und alles ok läuft damit. Mein Problem ist jedoch, dass ich zur Steuerung eine 470kOhm Poti benötige. Und wie steuere ich vom Raspberry den Poti an? Die Lösung könnte evtl. dieses Modul sein. Das ist ein Dimmer der per PWM angesteuert wird.


Sorry, hab deinen Beitrag erst jetzt entdeckt.

Den Triac- Baustein habe ich bei mir eingebaut. Funktioniert sehr gut.
Angesteuert habe ich ihn ähnlich wie dem Teil aus dem 2. Link, jedoch habe ich mir den passenden Opto- Koppler selbstgebaut. Man kann das Teil also ähnlich wie den Baustein z.B. mit 4-20mA analog (bei mir vom Billig-PID ATC30 für Primärluft) ansteuern. Parallel zum Ausgang vom Optokoppler habe ich den 470 kOhm Poti geschaltet zur Einstellung der Mindestdrehzahl.
Das Bauteil benötigt keine Hilfsenergie und wird direkt an den Triac- Baustein angeschlossen.
Falls du nicht schon längst eine andere Lösung hast... meine Lösung läuft seit einigen Jahren absolut störungsfrei und folgt sehr genau dem Eingangssignal..

Gruß Gust
Atmos 30GSE frisiert, Insel-BHKW 1kW(el)+2kW(th), GB162, Solar und PV, etc...

Benutzeravatar
gutber
--Mitglied--
Beiträge: 91
Holzvergaser: Do 24. Mär 2016, 12:30
Bewertung: 6
Wohnort: Wildeck

Re: Kessel- und Heizungssteuerung mit Raspberry Pi und Python

Beitrag #13437 von gutber » Mi 25. Jan 2017, 00:19

Eine Frage,

hat schon jemand den HV komplett mit dem Raspberry Pi am laufen, störungsfrei?
bin am überlegen :oops:
da alle Steuerungen irgendwie nicht das anbieten was ich mir vorstelle :hammerle

Gruß Erwin
Vigas 14,9 Bj 2006; LC von HB; Lufttrennung; Wirbulatoren; gr. BK; 2200l Puffer; Frischwasserstation; Solar 44m² FK 39° Richtung Ost; UVR1611; ca. 300m² beheizt; WDVS seit 2006;
Es wird täglich schwerer der Dümmste zu sein, die Konkurrenz wird immer größer!

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

Re: Kessel- und Heizungssteuerung mit Raspberry Pi und Python

Beitrag #13440 von Ralf » Mi 25. Jan 2017, 08:58

Hallo Erwin,
wenn Deine Frage ist, ob der Raspberry stabil genug läuft um darauf eine Steuerung zu programmieren kann ich mit einem klaren Ja antworten. Der Raspberry regelt bei mir schon seit Jahren die Rücklaufanhebung und den Heizungsmischer. Er liest alle One-Wire Temperaturfühler und holt die Daten von der FT und legt sie alle 6s in der mySQL Datenbank ab. Dabei läuft er mit ca. 30% Auslastung. Abgestürzt ist er mir in der Zeit noch nie. Allerdings mache ich von Zeit zu Zeit einen Reboot, wenn ich mal wieder an der Anlage was geändert habe.
Ganz am Anfang meiner Holzheizer Zeit habe ich auch die 12V Gebläse mit dem Raspberry geregelt. Allerdings habe ich zur Ansteuerung via PWM einen Arduino zwischengeschaltet. Das war nicht stabil, weil der Arduino ca. alle 2 1/2 Tage hängen geblieben ist. Ich habe vor ein paar Wochen mal einen Test gemacht, ob man die Gebläse auch direkt vom Raspberry via Software-PWM ansteuern kann. Dieser Versuch war erfolgreich. Und genau das werde ich implementieren. Allerdings habe ich noch einige Kleinigkeiten zu erledigen, bevor ich meinen 'neuen' Kessel vom Schorni abnehmen lassen kann. Bis zur Abnahme lasse ich am Kessel die WPA06 Gebläse dran. Danach werde ich auf die 12V Gebläse umbauen und die Regelung wieder mit dem Raspberry programmieren. Als nächster Schritt werde ich dann versuchen die Knödler Schaltung für die Lambdasonde wieder zu implementieren. Mit der hatte ich einige Probleme aber ich vermute inzwischen, dass das nur an der fehlenden Erdung lag. Mein größtes Problem ist die Abfrage der PT1000 und K Thermofühler. Dazu braucht der Raspberry zusätzliche Schaltungen. Bisher habe ich aber noch nichts gefunden, was mir richtig gut gefällt, in der Hinsicht. Am liebsten wäre mir, wenn ich diese Fühler mit ins One-Wire Netz implementieren könnte.
Ich halte den Raspberry für solch ein Projekt für sehr geeignet. Die Vorteile liegen auf der Hand. Der Raspberry kann ohne gefriggle aufs Netzwerk zugreifen. Eine Datenbank ist leicht zu installieren. Bildschirmausgabe muss man nicht separat programmieren, man kann ihn leicht fernsteuern. Relais sind super leicht anzusteuern, One-Wire Thermofühlerabfrage ist quasi schon an board. USB für den Anschluss der FT oder einer Speicherkarte hat er auch. Ansonsten gibt es viele Erweiterungen für den Raspi und massig Hilfen und Programmierbeispiele.
Ich hoffe, ich konnte Dich ermutigen.

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: Kessel- und Heizungssteuerung mit Raspberry Pi und Python

Beitrag #13441 von Mathias » Mi 25. Jan 2017, 09:31

Da gibt es aber auch ein paar Probleme auf die man vorbereitet sein sollte.

Der raspberry 2 hat ein Problem mit UV Licht, bleibt dann einfach stehen, ist aber im Keller sicher weniger problematisch. Sollte man aber beachten.

Alle raspberry haben das Problem mit der Speicherkarte. Die ist nicht unendlich oft beschreibbar und auch da kann es passieren, das er sich aufhängt und nicht mehr startet.
Ist bei mir nach ca. 12 Monaten passiert.
Bei einer Kessel Steuerung kann das noch ärgerlicher sein, als nur einer Visualisierung der Daten. Also immer eine einsatzbereite ersatzkarte griffbereit haben.
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: Kessel- und Heizungssteuerung mit Raspberry Pi und Python

Beitrag #13443 von Ralf » Mi 25. Jan 2017, 10:48

Die Speicherkarten sind in der Tat ein Problem. Da gibt es viele Fälschungen. Wenn man so eine erwischt, hat man nicht viel Freude am Raspi. Meine erste Speicherkarte hat nicht mal 4 Wochen gehalten. Allerdings ist seither eine drin, die schon seit fast 3 Jahren gute Dienste tut und dass, obwohl mySQL alle 6s eine Reihe Daten abspeichert und ich parallel meine Programmierversuche auch auf der Regelung vornehme. Die Datenbank wollte ich eigentlich auf einen externen USB-Stick auslagern, dazu bin ich aber noch nicht gekommen.
Auch die Spannungsversorgung sollte man nicht über die dafür vorgesehene USB Buchse vornehmen. Da gibt es wohl irgenwie eine Strombegrenzung, die relativ früh abriegelt. Dann stürzt der Raspi ab, wenn man z.B. ein Wifi Dongle einsteckt. Man kann die Spannung aber auch über die GPIO Pins einspeisen, dann gibt es solche Probleme nicht. Ich würde ohnehin gleich ein Netzteil nehmen, das 5V, 12V und vielleicht sogar 24V ausgibt. Dabei beim max. Strom nicht knausern. Für die Knödler Schaltung braucht man 12V.

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

Benutzeravatar
gutber
--Mitglied--
Beiträge: 91
Holzvergaser: Do 24. Mär 2016, 12:30
Bewertung: 6
Wohnort: Wildeck

Re: Kessel- und Heizungssteuerung mit Raspberry Pi und Python

Beitrag #13449 von gutber » Mi 25. Jan 2017, 11:55

Ich dachte allen ernstes daran eine FT oder AK 3000 oder wie auch immer zu ersetzen und mit meinen Wünschen zu ergänzen, 15 Temp.-Fühler hab ich schon die UVR kann nicht mehr! es wäre eine bessere Rücklaufanhebung, Heizungsrücklauf... denke 25 Fühler wäre gut
nur Teile?
mit den Karten ist bekannt (Foto) mir aber noch nicht passiert, toi toi toi
UV Licht,? wäre dann beim Schweißen ein Prob? reicht das Gehäuse nicht als Schutz?
mein Junior betreibt seit 1 Jahr damit einen Server, Problem nur beim letzten Update

Gruß Erwin
Vigas 14,9 Bj 2006; LC von HB; Lufttrennung; Wirbulatoren; gr. BK; 2200l Puffer; Frischwasserstation; Solar 44m² FK 39° Richtung Ost; UVR1611; ca. 300m² beheizt; WDVS seit 2006;
Es wird täglich schwerer der Dümmste zu sein, die Konkurrenz wird immer größer!

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

Re: Kessel- und Heizungssteuerung mit Raspberry Pi und Python

Beitrag #13450 von Mathias » Mi 25. Jan 2017, 12:17

USB Stick, SD Karte, alles das gleiche und Technologie bedingt nicht unendlich beschreibbar.

Ich hatte mehrere Daten im Sekundentakt auf die Karte geschrieben, was nicht wirklich sinnvoll war, und so die Karte geschrottet.

6s Mal bischen was drauf schieben sollte länger halten.

Was das UV Licht betrifft, reicht manchmal Tageslicht aus oder der Blitz vom Fotoapparat.
Das Gehäuse ist meistens irgendwo offen, wegen Kühlung etc.

Was Strom betrifft, kann der raspberry keine 5v auf seinen Anschlüssen vertragen.
Das wiederum ist für mich das KO Kriterium schlecht hin. Macht alles komplizierter, als mit dem arduino, welcher da toleranter ist.

Ich würde nach wie vor zu raspberry in Kombination mit dem arduino raten und die Kommunikation über USB laufen lassen.

Sämtliche Sensoren lassen sich leicht am arduino betreiben und erweitern.
Den raspberry zum Ändern von Parameter, Visualisierung und speichern der logdaten (auf Festplatte).

Ob man PID dann auf dem arduino oder raspberry berechnet ist dann relativ egal.
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: Kessel- und Heizungssteuerung mit Raspberry Pi und Python

Beitrag #13485 von Ralf » Do 26. Jan 2017, 22:05

Ich bin gerade dabei die Heizungssteuerung im Raspberry etwas umzubauen. Die Idee ist, dass ich unabhängige Module, wie Rücklaufanhebung, Heizkreis, Kesselsteuerung etc. programmiere, die man je nach bedarf starten kann. Das erste Modul, das ich mir vorgenommen habe ist das auslesen der OneWire Thermofühler. Dabei ist mir aufgefallen, dass dieses Thema gar nicht so trivial ist. Die Abfrage eines Fühlers dauert ca. 750ms. Wenn man jetzt, so wie ich, 16 Fühler hat, die man hintereinander abfragt, dauert eine Runde Fühlerabfragen ganze 12s. Das war mir zu lange. Gerade bei der Rücklaufanhebung ist es notwendig, dass schnellere Updates der Temperaturen eingelesen werden. Um die Zeit zu verkürzen habe ich mit einem Trick gearbeitet. Anstatt die Fühleabfragen hintereinander durchzuführen, habe ich für die Abfrage für jeden Fühler in einem eigenen Thread gestartet. Dadurch dauert jede Abfrage zwar immer noch mindestens 750ms, jedoch laufen die Abfragen parallel ab. Dadurch verkürzt sich die Zeit pro Abfragerunde von 12s auf ca. 3s.
Die ausgelesenen Werte werden in einer Variablen zwischengespeichert. Von dort holt der Haupt-Thread die Werte ab und verteilt alle Werte jede Sekunde über den Netzwerk-Port 5556 im lokalen Netzwerk. An den Port 5556 können sich dann andere Programmteile anhängen und bekommen und die Temperaturen geliefert. Dabei erlaubt das 0MQ-Modul (zmq) komfortable Filterung z.B. nach Namen des Thermofühlers.

Das Programm-Modul, das dies ausführt ist das folgende:

Code: Alles auswählen

# ===========================================================================
# Class OneWire
# ===========================================================================
from threading import Thread

class OneWire:
  def __init__(self, file):
    self.file = file
    self.temperature = -999
    t = Thread(target = self.readTemp)
    t.setDaemon(True)
    t.start()

  def readTemp(self):
    self.active = 1
    while self.active:
      text = ""
      try:
        myfile = open(self.file)
        text = myfile.read()
        myfile.close()
      except:
        text = "NO"
        self.temperature = -999
      if text.find("NO") == -1:
        temp_data = text.split()[-1]
        temp = float(temp_data[2:])
        self.temperature = temp / 1000

  def getTemp(self):
    return(self.temperature)

# ===========================================================================
# End of Class OneWire
# ===========================================================================

# ===========================================================================
# GasyPi 1-Wire Temperature Server
# ===========================================================================
import time
import zmq
from ConfigParser import SafeConfigParser

parser = SafeConfigParser()
parser.read('gasypi_W1.config')
counter = 1
devices = {}
while True:
  dev_id = "Temp" + str(counter)
  dev_name = "Temp" + str(counter) + "_Name"
  try:
    devices[counter - 1, 0] = "/sys/bus/w1/devices/" + parser.get('W1-devices', dev_id) + "/w1_slave"
    devices[counter - 1, 1] = parser.get('W1-devices', dev_name)
    devices[counter - 1, 2] = OneWire(devices[counter - 1, 0])
  except:
    break
  counter += 1

n = len(devices) / 3
temperature = -999
context = zmq.Context()
socket = context.socket(zmq.PUB)
port = 5556
socket.bind("tcp://*:%s" % port)

while True:
  for i in range(0, n):
    socket.send("%s:%.3f" % (devices[i,1], devices[i, 2].getTemp()))
  time.sleep(1)


Zusätzlich wird noch eine Config Datei benötigt, die folgendermaßen aussieht:

Code: Alles auswählen

[W1-devices]
Temp1 = 28-000004abfb55
Temp1_Name = W1_VL
Temp2 = 28-000005e5ccc8
Temp2_Name = W1_RL
Temp3 = 28-000005f403dc
Temp3_Name = W1_Loop_Forward
Temp4 = 28-000005f1ff79
Temp4_Name = W1_Tank_Zone1
Temp5 = 28-000005f2fe6f
Temp5_Name = W1_Tank_Zone2
Temp6 = 28-000005f2f56c
Temp6_Name = W1_Tank_Zone3
Temp7 = 28-000005f3d4e2
Temp7_Name = W1_Tank_Zone4
Temp8 = 28-000005f375bc
Temp8_Name = W1_Tank_Zone5
Temp9 = 28-000005f318a9
Temp9_Name = W1_Tank_Zone6
Temp10 = 28-051686d678ff
Temp10_Name = W1_Tank_Zone7
Temp11 = 28-051686d3b7ff
Temp11_Name = W1_Tank_Zone8
Temp12 = 28-0416864c2bff
Temp12_Name = W1_Tank_Zone9
Temp13 = 28-0416861978ff
Temp13_Name = W1_Tank_Zone10
Temp14 = 28-051686d9fbff
Temp14_Name = W1_Tank_Zone11
Temp15 = 28-051686d745ff
Temp15_Name = W1_Tank_Zone12
Temp16 = 28-000004bff14b
Temp16_Name = W1_Outside


Zum abfragen der Werte kann man z.B. folgendes Modul verwenden:

Code: Alles auswählen

import sys
import zmq

port = 5556


# Socket to talk to server
context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.connect ("tcp://localhost:%s" % port)
socket.setsockopt(zmq.SUBSCRIBE, "")

total_value = 0
while True:
    string = socket.recv()
    #topic, messagedata = string.split()
    #total_value += int(messagedata)
    print string


Mit den Daten, die die FT liefert werde ich ähnlich verfahren. Dadurch kann ich ein Steuerungsmodul für die Gebläse schreiben, das völlig unabhängig von der derzeitigen, funktionierenden Heizungssteuerung ist.

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: Kessel- und Heizungssteuerung mit Raspberry Pi und Python

Beitrag #13493 von Mathias » Fr 27. Jan 2017, 07:10

750 ms?

OK , ist etwas her das ich mich damit beschäftigt habe, aber geht es nicht mit "normaler" Verkabelung schneller?

Ohne parasitärer Verkabelung und mit Widerstände zwischen Busleitung und Sensordatenleitung (Terminierung) müsste das deutlich schneller gehen.
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: Kessel- und Heizungssteuerung mit Raspberry Pi und Python

Beitrag #13496 von Ralf » Fr 27. Jan 2017, 08:31

Hallo Mathias,
die 750ms scheinen nicht an den Fühlern oder dem Netzwerk zu liegen. Das scheint eine Verzögerung zu sein, die aus irgend einem Grund im W1 Kernelmodul fest programmiert ist. Das bestätigt sich auch dadurch, dass ich bei paralleler Abfrage erheblich schneller bin. Ich habe ein paar Tricks gefunden, wie man das mit speziellen Parametern für das Kernel Modul wohl beschleunigen kann. Aber diese Hacks haben mir nicht gefallen. Die Lösung, die ich jetzt habe funktioniert ausreichend gut. Ich denke, diese Begrenzung wäre kein Problem, wenn man die Fühler mit dem Arduino ausliest. Aber wie gesagt, das versuche ich zu vermeiden wie die Pest :mrgreen:
Ich verwende übrigens alle 3 Leitungen für das W1-Netzwerk.

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: Kessel- und Heizungssteuerung mit Raspberry Pi und Python

Beitrag #14385 von Mathias » Sa 25. Feb 2017, 04:15

So, bin soweit.

Raspberry Pi 1, 2 und 3 sind bereit. (Kali Linux :twisted: )

Python installiert und erste Schritte unternommen :L

Konzept hab ich auch erstellt. (wird etwas umfangreicher als das bisher der Fall ist - so mit Festplatte, ESP8266, Arduino's, Webspace und und und.)

Nun hänge ich am USB und komme nicht weiter.

Hat jemand bereits ein Pythonscript mit dem er die FT-Daten empfängt?



Nebenbei der Hinweis auf

https://pi-hole.net/

weniger Werbung usw.
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: Kessel- und Heizungssteuerung mit Raspberry Pi und Python

Beitrag #14386 von Ralf » Sa 25. Feb 2017, 06:18

Hallo Mathias,
unten der Code um die Daten von der FT zu empfangen. Die Klasse macht allerdings noch etwas mehr. Die Daten werden gleich in eine Datenbank abgelegt und außerdem experimentiere ich im Moment damit, die Daten auch gleich über einen Netzwerk Socket auszugeben. Somit kann man leichter Plug-Ins realisieren (zqm).
Der Klasse werden im _init_ die OneWire Klassen der Thermofühler übergeben, damit die Temperaturen auch gleich mit in die Datenbank wandern können.

VG
Ralf

Code: Alles auswählen

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

class FTData:
  def __init__(self, outside, mixforward, bentryt, bexitt, tank1top, tank1middle, tank1bottom, tank2top, tank2middle, tank2bottom, tank3top, tank3middle, tank3bottom, tank4top, tank4middle, tank4bottom):
    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
    self.tank7 = tank3top
    self.tank8 = tank3middle
    self.tank9 = tank3bottom
    self.tank10 = tank4top
    self.tank11 = tank4middle
    self.tank12 = tank4bottom

    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):
    context = zmq.Context()
    socket = context.socket(zmq.PUB)
    socket.connect("tcp://*:5557")

    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="xxx", passwd="xxx", 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`, `Tank7`, `Tank8`, `Tank9`, `Tank10`, `Tank11`, `Tank12`,`HeatExchanger`) VALUES (%s, %s, %s, %s, %s, %s, %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.tank7.getTemp(), self.tank8.getTemp(), self.tank9.getTemp(), self.tank10.getTemp(), self.tank11.getTemp(), self.tank12.getTemp(), self.getHeatExchangerT()))
      db.commit()
      cur.close()
      db.close()
      socket.send("FT_Time: %s" % (self.getTime()))
      socket.send("FT_Oven: %s" % (self.getBoilerT()))
      socket.send("FT_Flue_Gas: %s" % (self.getExhaustT()))
      socket.send("FT_Chamber: %s" % (self.getChamberT()))
      socket.send("FT_Prim_Blower: %s" % (self.getPrimSpeed()))
      socket.send("FT_Oxygen: %s" % (self.getO2()))
      socket.send("FT_Sec_Blower: %s" % (self.getSecSpeed()))
      socket.send("FT_Hot_Water: %s" % (self.getHeatExchangerT()))

  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
Mathias
--Mitglied--
Beiträge: 632
Holzvergaser: Do 28. Jan 2016, 21:13
Bewertung: 105
Wohnort: Herten

Re: Kessel- und Heizungssteuerung mit Raspberry Pi und Python

Beitrag #14415 von Mathias » So 26. Feb 2017, 18:34

Es klappt, auch wenn ich nicht ganz verstehe wo das Problem war.

T0108.3 K80.1 A175 B00562 P044 O03.8 S001 R000 V09.8 Rt500.0 Ra099 P1 Z002 w--- x--- y--- z---


T war glaube ich Zeit
K Kessel Temperatur
A Abgas
B Brennkammer
P PrimärLuft
O Restsauerstoff
S SekundärLuft
V Verlust
P Pumpe
Z Status

Bei Rt und Ra bin ich mir nicht sicher
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
René
Bereichsmoderator
Beiträge: 1207
Holzvergaser: Do 28. Jan 2016, 12:52
Bewertung: 208

Re: Kessel- und Heizungssteuerung mit Raspberry Pi und Python

Beitrag #14419 von René » So 26. Feb 2017, 19:30

Rt Rücklauftemperatur
Ra Rücklaufanhebung

Damit kannst du z.B. einen Mischer durch die Ft ansteuern, der dann die Rücklaufanhebung regelt.
Gruß René

Wir sind hier nicht bei "Wünsch dir was" !

:mrgreen: Holzvergaser Forum, das rockt. :mrgreen:


Zurück zu „Sonstige Steuerungen“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast