Ausgänge direkt am GPIO Steuern

Überwachung der Solaranlage per eMail oder Pushover und Steuerung von Geräten mit Smart Home Zentralen. PV-Monitoring und Sonoff Geräten mit Tasmota Firmware
Kelomat
Beiträge: 3
Registriert: So 5. Mai 2019, 16:12

Ausgänge direkt am GPIO Steuern

Beitrag von Kelomat » So 19. Mai 2019, 10:12

Hallo Leute!
Ein Frund hat einen MPI Hybrid 10kW 3PH Wechselrichter laufen und wir wollen eine Steuerung für einen Heizstab bauen. Ist es möglich das GPIO Ausgänge vom Raspberry direkt von der Solaranzeige gesteuert werden (am gleichen Raspberry wo die Solaranzeige läuft)?

Am besten wenn x kW Überschuss ins Netz gehen Ausgang 1 ein
Sollte noch immer überschuss vorhanden sein, den nächsten Ausgeng usw...

Benutzeravatar
Ulrich
Administrator
Beiträge: 716
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Kontaktdaten:

Re: Ausgänge direkt am GPIO Steuern

Beitrag von Ulrich » So 19. Mai 2019, 10:42

Möglich wäre das schon, nur gibt es elegantere Lösungen.
Z.B. mit einem Shelly oder Sonoff WLAN Schalter.
--------------------------------------
Ulrich [Admin]

Kelomat
Beiträge: 3
Registriert: So 5. Mai 2019, 16:12

Re: Ausgänge direkt am GPIO Steuern

Beitrag von Kelomat » Mi 22. Mai 2019, 16:22

Danke für den Tipp!

Wie würde das jetzt funktionieren? Ich muss ja dem Raspi irgendwie beibrngen das er den Shelly ein oder ausschaltet?
Muss ich das im Setup irgendwo einstellen?

Benutzeravatar
Ulrich
Administrator
Beiträge: 716
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Kontaktdaten:

Re: Ausgänge direkt am GPIO Steuern

Beitrag von Ulrich » Mi 22. Mai 2019, 17:28

Nein, dafür gibt es noch keine fertige Lösung. Da musst Du selber einen Script schreiben, der das Ein- und Ausschalten übernimmt. Es ist halt nur etwas einfacher, da man nicht in die Hardware eingreifen muss.
--------------------------------------
Ulrich [Admin]

Kelomat
Beiträge: 3
Registriert: So 5. Mai 2019, 16:12

Re: Ausgänge direkt am GPIO Steuern

Beitrag von Kelomat » So 10. Nov 2019, 14:48

So ih hab mal mit Python ein wenig herumgespielt und jetzt wird mein Heizstab in Stufen je nach eingespeister PV Leistung per MQTT geschaltet.

Ich würde jetzt noch gerne die Batteriespannung mit als Bedingung dazunehmen aber ich bekomme es irgendwie nicht hin das ich die verschiedenen Nachrichten auseinanderhalte...

Hier mal mein Code:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-

import paho.mqtt.client as mqtt
import RPi.GPIO as GPIO
import time

GPIO.setwarnings(False)

GPIO.setmode(GPIO.BOARD)

chan_list = [29,31,33,35,37]

GPIO.setup(chan_list, GPIO.OUT)

GPIO.output(chan_list, GPIO.HIGH)


Schwelle1 = -1700 #  Die Schwelle ab der die Heizungsstufe
Schwelle2 = -2000 #  eingeschalten wird in Watt
Schwelle3 = -3700
Schwelle4 = -4500
Schwelle5 = -7200

Heizleistung1 = -1200
Heizleistung2 = -1500
Heizleistung3 = -3200
Heizleistung4 = -4000
Heizleistung5 = -6700

Stufe1 = [33] #gpio Pins zu den Stufen
Stufe2 = [33,35]
Stufe3 = [29,35]
Stufe4 = [29,33,35]
Stufe5 = [29,31,35]

def on_message(client, userdata, message):
    global kompenser
    msg = int(message.payload)
    print msg
#   print kompenser
    if msg + kompenser < Schwelle5 :
        GPIO.output(chan_list, GPIO.HIGH)
        GPIO.output(Stufe5, GPIO.LOW)
        kompenser = Heizleistung5
    elif msg + kompenser  < Schwelle4 and msg + kompenser > Schwelle5:
        GPIO.output(chan_list, GPIO.HIGH)
        GPIO.output(Stufe4, GPIO.LOW)
        kompenser = Heizleistung4
    elif msg + kompenser < Schwelle3 and msg + kompenser > Schwelle4:
        GPIO.output(chan_list, GPIO.HIGH)
        GPIO.output(Stufe3, GPIO.LOW)
        kompenser = Heizleistung3
    elif msg+ kompenser < Schwelle2 and msg + kompenser > Schwelle3:
        GPIO.output(chan_list, GPIO.HIGH)
        GPIO.output(Stufe2, GPIO.LOW)
        kompenser = Heizleistung2
#   elif msg + kompenser < Schwelle1 and msg + kompenser > Schwelle2:
#                   GPIO.output(chan_list, GPIO.HIGH)
#                   GPIO.output(Stufe1, GPIO.LOW)
#       kompenser = Heizleistung1
#       print kompenser
    else:
        GPIO.output(chan_list, GPIO.HIGH)
        kompenser = 0


def on_connect(client, userdata, flags, rc):
    client.subscribe('solaranzeige/panta10/ac_eingangsleistung')

msg = 0
kompenser = 0

Broker_address = "localhost"

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.connect(Broker_address)
print ("Verbunden mit:"+ Broker_address)

client.loop_forever()
Hat jemand eine Idee wie ich das machen könnte?

Antworten