Code: Select all
#!/usr/bin/python
# -*- coding: utf-8 -*-
# heizung-signal.py
# http://elecrow.com/
# 2021-12-08 Heiner Wiegel
# Relay HFD4/5-s 2A? 220V?
# crontab
# m h dom mon dow command
# 0 6 * * 1-5 /usr/bin/python /home/pi/Documents/Heizung/heizung-tag.py
# 0 8 * * 6-7 /usr/bin/python /home/pi/Documents/Heizung/heizung-tag.py
# 0 22 * * 0-4 /usr/bin/python /home/pi/Documents/Heizung/heizung-nacht.py
# 0 23 * * 5-6 /usr/bin/python /home/pi/Documents/Heizung/heizung-nacht.py
# Vaillant VRT-QZA
#
# | blau: Wechselkontakt: CO: an COM
# | gelb: Ruhekontakt: Tagbetrieb: an NC
# | rot: Arbeitskontakt: Nachtbetrieb: an NO
# |
# |
import RPi.GPIO as GPIO
import dht11
import time
import signal, os
import datetime
import os
# define relay pin BCM Mode
relay_pin = 21
# relay connections:
# COM: common: moves
# NO: normally open: connects to COM when relay turns on
# NC: cormally closed: connects to COM when relay turns off
rgb_pin = 12 #BCM Mode
# set GPIO mode as GPIO.BCM
GPIO.setwarnings(True)
GPIO.setmode(GPIO.BCM)
# setup relay pin as OUTPUT
GPIO.setup(relay_pin, GPIO.OUT)
dht11inst = dht11.DHT11(pin=4) #BCM Mode
mypid = os.getpid()
pidfile = open("/home/pi/Documents/Heizung/heizung_pid", "w")
pidfile.write(str(mypid))
pidfile.close()
logfile = open("/home/pi/Documents/Heizung/heizung.log", "a", buffering=0)
now = datetime.datetime.now().isoformat()
logfile.write("%s: PID=%d\n" % (now, mypid))
logfile.flush()
def receiveSIGUSR(signalNumber, frame):
now = datetime.datetime.now().isoformat()
if signalNumber == signal.SIGUSR1:
# Open Relay: close circuit
print "%s: %s" % (now, "SIGUSR1: COM to NC: Tagbetrieb")
logfile.write("%s: %s\n" % (now, "SIGUSR1: COM to NC: Tagbetrieb"))
logfile.flush()
GPIO.output(relay_pin, GPIO.LOW);
elif signalNumber == signal.SIGUSR2:
# Close Relay: open circuit
print "%s: %s" % (now, "SIGUSR2: COM to NO: Nachtbetrieb")
logfile.write("%s: %s\n" % (now, "SIGUSR2: COM to NO: Nachtbetrieb"))
logfile.flush()
GPIO.output(relay_pin, GPIO.HIGH)
return
signal.signal(signal.SIGUSR1, receiveSIGUSR)
signal.signal(signal.SIGUSR2, receiveSIGUSR)
# Open Relay: close circuit
print "%s: %s" % (now, "INIT: COM to NC: Tagbetrieb")
logfile.write("%s: %s\n" % (now, "INIT: COM to NC: Tagbetrieb"))
GPIO.output(relay_pin, GPIO.LOW)
while True:
result = dht11inst.read()
now = datetime.datetime.now().isoformat()
if result.is_valid():
logfile.write("%s: Temperature: %-3.1f °C Humidity: %-3.1f%%\n" % (now, result.temperature, result.humidity))
logfile.flush()
time.sleep(600)
os.remove("/home/pi/Documents/Heizung/heizung_pid")
# Close Relay
GPIO.cleanup()
Code: Select all
#!/bin/bash
kill -s SIGUSR1 `cat /home/pi/Documents/Heizung/heizung_pid`
Code: Select all
#!/bin/bash
kill -s SIGUSR2 `cat /home/pi/Documents/Heizung/heizung_pid`