6. Node-RED vs. Python

Nun gab es ja diesen provisorischen minimalen Ansatz der Steuerung meiner Brandmeldeanlage in einem Node-RED-Flow, aber bevor ich nun versuche die gesamte Brandmeldezentrale in diesem Puzzle-Java zu bauen, wollte ich wieder zurück in die Python-Welt, denn Node-RED war ja nur als Visualisierung der Zustände und Ersatz für noch fehlende BMA-Hardware gedacht.

Klar ist die Idee charmant alles mit drag’n’drop in einem Browser-GUI zusammenzuklicken und ein bisschen Code in Funktionsblöcken unterzubringen. Ich möchte aber gerne die volle Kontrolle über das Geschehen haben und fühle mich mit Python einfach wohler als mit Java.

das BMZ-Skript (nodebma_bmz.py)

Es wird also Zeit das Herzstück der Brandmeldeanlage in Python zu schreiben. Um die Kommunikation mit dem I2C-Bus brauchen wir uns nicht mehr kümmern, das macht ja nodebma_interface.py bereits als systemd-Service im Hintergrund. Die BMZ muss jetzt „nur noch“ mit dem Broker sprechen und Entschiedungen treffen.

Auch hier wird nun paho-mqtt zur Kommunikation mit dem Broker genutzt. Das Skript hat im wesentlichen eine Callback-Funktion für die eingehenden MQTT-Nachrichten und eine Main-Loop, in der die Versorgung des FAT-Displays mit der aktuellen Uhrzeit sowie ein paar Logik-Prüfungen stattfinden,

Aus dem MQTT-Callback werden in Abhängigkeit vom erkannten Trigger dann Funktionen für die Alarmauslösung, Rücksetzung, Steuerung von Akustik und Übertragung sowie die Bedienung und Versorgung des FAT umgesetzt.

Was die Brandmeldezentrale leisten soll

werde ich im nächsten Teil versuchen zu umreißen 😉