Programmierung Alarmanlage, offene Fragen

Node-RED als CCU3/RaspberryMatic Addon, WebApp, HomeKit, ...

Moderator: Co-Administratoren

dhuuk42
Beiträge: 47
Registriert: 07.03.2017, 08:00

Programmierung Alarmanlage, offene Fragen

Beitrag von dhuuk42 » 29.10.2018, 08:22

Hallo,

ich bin gerade dabei eine Alarmanlage per NodeRed zu programmieren. Ich bin gerade in den ersten Zügen und stolpere über die ersten Probleme, hier mal meine Anforderung.
  • Alarmanlage mit verschiedenen Modi analog Hüllschutz / Vollschutz etc.
  • Benachrichtigung im Alarmfall, welcher Sensor hat ausgelöst inkl. Live Übermittlung
  • Benachrichtung über Alarmfall inkl. Verzögerung Alarmsirene und Rückfrage per Telegram ob "reeller Alarm" oder "Fehlalarm"
  • Im Alarmfall, einstellen der Bewegungsmelder. Parameter: Zeit, nach der erkannte Bewegung
    zurückgesetzt wird
    auf 15 Sekunden setzen, dadurch können Bewegungen im Haus nachvollzogen werden
  • Einschalten Sirenen
  • Einschalter Lichter
  • Hochfahren von Rolladen
  • Deaktivieren des Alarms per Telegram
Realisieren werde ich das ganze über eine Systemvariable mit definiertem Wertebereich von
  • -1 - Alarmanlage deaktiviert
  • 0 - Alarmanlage in Keller und EG scharf
  • 1 - Alarmanlage Keller, EG und 1.OG scharf
  • 2 - Alarmanlage Keller, EG, 1.OG und 2.OG scharf
Sobald ich mit der ganzen Geschichte fertig bin werde ich diesbezüglich eine Anleitung in Github veröffentlichen. Aber bis dahin ist es noch ein weiter Weg. Aus Gründen der Anwenderfreundlichkeit will ich natürlich schauen, dass der Flow auch ohne größere Anpassungen auf andere Systeme zu überführen ist. Deswegen würde ich gerne mit Device Arrays arbeiten, ich weiß aber nicht wie ich DeviceArrays definiere...
Node_Alarm.png
Aktuell stehe ich vor folgendem Problem, per RPC Eventnode kann ich mit Wildcards arbeiten und somit alle Kanäle die den String "SMI" beinhaltet mit einbeziehen (siehe Grafik). Die Namen meiner Bewegungsmelder enden auf "SMI" z.B. (0 Flur Eingang SMI). Allerdings würde ich lieber einzeln die Kanäle definieren die in diesen RPC Eventnode einfließen. Gibt es eine Möglichkeit ein Array von Kanälen zu definieren ohne Wildcards?
Klar könnte ich die SMIs in meinem Anwendungsfall nach Stockwerken benennen z.B. (0 Flur Eingang SMI0) allerdings wäre das keine allgemeingültige Lösung die man als Tutorial anbieten kann.

Danke für Eure Hilfe!

hobbyquaker
Beiträge: 3978
Registriert: 12.07.2009, 20:01
Hat sich bedankt: 17 Mal
Danksagung erhalten: 176 Mal
Kontaktdaten:

Re: Programmierung Alarmanlage, offene Fragen

Beitrag von hobbyquaker » 29.10.2018, 17:55

Grundsätzlich kannst Du über RegExp Filterung auch eine lange Liste von Namen angeben:

Code: Alles auswählen

Kanalname1|Kanalname2|Kanalname3
Ich würde das aber nicht empfehlen. Gerade im Hinblick auf Wiederverwendbarkeit durch Andere würde ich die Bewegungsmelder gar nicht nach Namen Filtern sondern per RegExp nach ChannelType:

Code: Alles auswählen

MOTIONDETECTOR_TRANSCEIVER|MOTION_DETECTOR
Die weitere Auswahl kann dann über eine Filterung nach Räumen erfolgen, in Deinem Beispiel wäre es wohl am einfachsten für jedes Stockwerk einen Raum anzulegen und dort die Bewegungsmelder zuzuordnen, alternativ könnte man auch wieder per RegExp eine durch | getrennte Liste von Räumen zur Filterung nutzen.

dhuuk42
Beiträge: 47
Registriert: 07.03.2017, 08:00

Re: Programmierung Alarmanlage, offene Fragen

Beitrag von dhuuk42 » 30.10.2018, 22:24

Ok, ich habe es jetzt über die Gewerke geregelt. Das funktioniert nun auch.
Alarmanlage_Beta0.1.png
Ich musste zusätzlich folgende Nodes installieren https://flows.nodered.org/node/node-red ... lean-logic um einen Node zu haben der erst weiterleitet wenn mehrere Statements true sind.

Bisher habe ich es geschafft aus dem RPC Node per msg.topic ${channelName} zu übergeben. Der endete nachher im Telegram Node und gab aus welcher Sensor den Alarm ausgelöst hat. Leider verliere ich msg.topic im boolean node. Hat jemand eine Idee wie ich msg.topic da durch schleifen kann?

Grüße,

huuk!

hobbyquaker
Beiträge: 3978
Registriert: 12.07.2009, 20:01
Hat sich bedankt: 17 Mal
Danksagung erhalten: 176 Mal
Kontaktdaten:

Re: Programmierung Alarmanlage, offene Fragen

Beitrag von hobbyquaker » 30.10.2018, 22:36

Kenne den Boolean Node nicht, aber vielleicht kommst Du mit dem "Combine Logic" Node ans Ziel, der ist mitgeliefert und bietet auch die Möglichkeit eine logische Und-Verknüpfungen mehrere Messages zu machen.

dhuuk42
Beiträge: 47
Registriert: 07.03.2017, 08:00

Re: Programmierung Alarmanlage, offene Fragen

Beitrag von dhuuk42 » 31.10.2018, 15:31

Mit Combine Logic komm ich irgendwie nicht weiter. Sobald ein Statement True ist im Combine-Logic Node wird trotz "AND" ein true durchgeschleift und die Alarmanlage löst aus. Selbst wenn ich die Alarmanlage erst nur scharf schalte.
CombineLogic.png
Im Endeffekt sollen die Sensoren nur Alarm auslösen wenn auch die Alarmanlage aktiviert wurde. Das läuft ja für mich in zwei Bedingungen die dann zutreffen müssen und nur wenn wirklich diese beiden Bedingungen zutreffen (AND) muss es im Flow weitergehen.

Wenn Alarmanlage eingeschaltet = true und ein beliebiger Sensor löst aus (Motion/State = true) dann muss der Alarm auslösen. Jemand eine Idee wie ich das umsetze?

Grüße,

huuk!

hobbyquaker
Beiträge: 3978
Registriert: 12.07.2009, 20:01
Hat sich bedankt: 17 Mal
Danksagung erhalten: 176 Mal
Kontaktdaten:

Re: Programmierung Alarmanlage, offene Fragen

Beitrag von hobbyquaker » 31.10.2018, 16:36

Ah ok, was Du eigentlich brauchst ist "Combine If", nicht "Combine Logic". Ob die Anlage scharf oder unscharf ist speist Du dann ins "condition Topic" ein. https://github.com/hobbyquaker/RedMatic ... ps#if-node

Auf Deinem letzten Screenshot sieht man nu 5 RPC Event Nodes die alle auf Bewegungsmelder gehen? Warum das nicht mit einem Node abhandeln? Dort einfach alle Bewegungsmelderevents mittels Filterung nach Gewerk oder ChannelType holen würde den Flow denke ich übersichtlicher machen.

dhuuk42
Beiträge: 47
Registriert: 07.03.2017, 08:00

Re: Programmierung Alarmanlage, offene Fragen

Beitrag von dhuuk42 » 31.10.2018, 22:32

Das sind 5 Nodes, korrekt.
  • SMI Keller = Alle SMIs (Bewegungsmelder) im Keller
  • SWDO EG - Alle SWDO (Fensterkontakte) im EG
  • SMI EG - Alle SMIs im EG
  • ...
Hab die Stockwerke wie bereits erwähnt über Gewerke geregelt. Ich schaue mir mal den combine-if node an und explizit da das condition topic. Leider finde ich nur Abends die Zeit wenn die Familie schläft zum basteln.. deswegen dauert es ein wenig ;)

dhuuk42
Beiträge: 47
Registriert: 07.03.2017, 08:00

Re: Programmierung Alarmanlage, offene Fragen

Beitrag von dhuuk42 » 31.10.2018, 22:45

Ich glaube Combine-if ist nicht die Lösung. Der leitet auch bei nur einem einzigen true weiter..

Theoretisch bräuchte ich einen Node der folgendes abdeckt. Weiterleitet wenn..
  • ein Wert von 0-2 aus der Variable Alarmanlage kommt
  • ein Bewegungsmelder / Fensterkontakt true meldet

hobbyquaker
Beiträge: 3978
Registriert: 12.07.2009, 20:01
Hat sich bedankt: 17 Mal
Danksagung erhalten: 176 Mal
Kontaktdaten:

Re: Programmierung Alarmanlage, offene Fragen

Beitrag von hobbyquaker » 31.10.2018, 22:47

Beim Combine If kannst Du ein Topic definieren das als "condition topic" gilt. Wenn auf diesem Topic dann Nachrichten reinkommen werden die als Bedingung genutzt ob andere Nachrichten (mit anderen Topics) durchgelassen werden oder nicht. Sprich Du müsstest hier noch mit einem Switch und/oder Change Node davor arbeiten der den Wert der Variable Alarmanlage auf true/false mappt.

antiautomatic
Beiträge: 2
Registriert: 05.05.2019, 17:42

Re: Programmierung Alarmanlage, offene Fragen

Beitrag von antiautomatic » 05.05.2019, 17:46

dhuuk42 hat geschrieben:
29.10.2018, 08:22
Sobald ich mit der ganzen Geschichte fertig bin werde ich diesbezüglich eine Anleitung in Github veröffentlichen.
Moin,

Ich bin gerade zufällig über Google auf den Post gekommen, da ich etwas ganz ähnliches vorhabe. Hast Du Dein Projekt zu Ende gebracht und tatsächlich eine Anleitung veröffentlicht? Würde mich sehr interessieren.

Schöne Grüße,

Manuel

Antworten

Zurück zu „RedMatic“