Büsingen Lüftung

VB-Makro & Zabbix

Subs: Init · Tick · KNXPaket · Alternate · BoolWechsel · Zeitplan · ShutDown · Intervall 30 s

Kompiliert Ticks: 0 Letzter Tick: — Adressen: 124
Zabbix Agent: ausLLD: knx.address.discovery · Wert: knx.address.value[key] (älter 30 min = Fehlerhaft)

Makro

Zabbix

zabbix_get -s HOST -p 10052 -k knx.address.discovery

API / Datenstrukturen (AlterNET nicht in Blazor möglich)
' ============================================================
' BBasic KNX Anlage – VB.NET Makro
'
' AlterNET-Editor (WinForms) ist hier nicht einbindbar
' (Blazor + MAUI-WebView). Diese Datei ist die Referenz.
'
' Pflicht-Subs:
'   Sub Init(Anlagenname As String)
'   Sub Tick(Anlagenstatus As PlantStatusSnapshot)
'   Sub KNXPaket(paket As KnxPacketInfo, Anlagenstatus As PlantStatusSnapshot)
'   Sub Alternate(paket As KnxPacketInfo, Anlagenstatus As PlantStatusSnapshot)  ' jedes Paket
'   Sub BoolWechsel(paket As KnxPacketInfo, alt As Boolean, neu As Boolean, Anlagenstatus As PlantStatusSnapshot)
'   Sub Zeitplan(ev As ScheduleEventInfo, Anlagenstatus As PlantStatusSnapshot) ' ev.Setpoint noch änderbar
'   Sub MakroBool(ev As MacroBoolEventInfo, Anlagenstatus As PlantStatusSnapshot)  ' optional, Makro-Bool gewechselt
'       alternativ: Sub MakroBool(name As String, wert As Boolean [, Anlagenstatus As PlantStatusSnapshot])
'       (Alias-Name OnMacroBool) · name = Id des Makro-Bools
'   Sub ShutDown()
'
' Hilfen:
'   Log(msg)                          Script-Log + Ereignis-Log („Makro Tick: …“) + Journal
'   Log(level, msg)                   level = "info" | "warn" | "error" | "debug"
'                                     warn/error erscheinen als Warnung/Fehler im Ereignis-Log, debug nur Script-Log/Journal
'   SendAlarmMail(betreff, text) As Boolean
'                                     Mail über die Alarm-Mail-Einstellungen (SMTP, Empfänger, Absender wie Alarm-Mails),
'                                     Betreff wird zu "[Anlagenname] betreff". Limit: 1 Mail je gleichem Betreff
'                                     pro 60 min, max. 20 Makro-Mails pro Stunde; Unterdrücktes steht im Log.
'                                     True = angenommen (Versand läuft im Hintergrund), False = unterdrückt/kein SMTP.
'   Beispiel:
'     If Anlagenstatus.TempOutdoor < -15 Then
'         Log("warn", "Sehr kalt: " & Anlagenstatus.TempOutdoor.ToString("0.0") & " °C")
'         SendAlarmMail("Frostwarnung", "Außentemperatur " & Anlagenstatus.TempOutdoor.ToString("0.0") & " °C")
'     End If
'   RegisterAddress / RegisterAdress  key [, bezeichnung, knxAddress, dpt, einheit, rolle]
'   SetValue(key, value)              Zabbix knx.address.value[key]
'   GetKNXBool("0/1/2") As Boolean    letzter Bool aus Cache (GA oder Role)
'   GetKNXTemp("0/0/6") As Double     letzte Temperatur °C
'   GetKNXProzent("0/0/1") As Double  letzter Prozentwert
'   GetKNXValue("14/1/7") As Object   letzter Wert typisiert nach DPT: Boolean (1.x), Double (5.001/9.x/14.x),
'                                     Long (Zähler 5.010/7.x/12.x/13.x), String (16.x), TimeSpan (10.001),
'                                     DateTime (11.001/19.001), Integer (17.001 Szene 1-basiert, 20.x Code);
'                                     DPT fehlt/nicht unterstützt, Länge passt nicht, nichts empfangen: Nothing
'                                     (Rohbytes im Ereignis KNXPaket: paket.Data)
'   GetKNXText("14/1/7") As String    Anzeige mit Einheit, z. B. "999.68 lx", "Fr 16:24:00", "Ein"; nicht dekodierbar: "*UDEF*"
'   Knx.Connected As Boolean
'   Knx.WriteBool(roleOderGA, wert)
'   Knx.WritePercent(roleOderGA, 0..100)
'   Knx.WriteByte(roleOderGA, 0..255)
'   Knx.WriteTemp(roleOderGA, celsius)
'   Knx.WriteRole(role, wert)
'   Knx.WriteAddress(ga, wert, Optional dpt := "1.001")
'   Knx.WriteBool("macro:<id>", wert)  Makro-Bool setzen → Ziele + Event MakroBool
'   GetMakroBool("<id>") As Boolean    letzter Makro-Bool-Wert (False wenn unbekannt)
'   GetKnxStatus("<GA>") As Double     Rückmeldung (Status-GA) zur Schreib-GA: 1/0 bzw. Wert, -1 = unbekannt
'   Adressen überall: KNX-GA "0/1/2", "shelly:<id>:switch:0", "url:<id>", "macro:<id>"
'   Modbus: GetKNXValue("modbus:<gerät>:<punkt>") lesen, "modbus:<gerät>:<punkt>:alarm" = Alarm 0/1;
'           Schreiben (FC06) nur bei Geräte-Freigabe „Schreiben freigeben“ + Punkt bestätigt + schreibbar
'
' ----- PlantStatusSnapshot (Anlagenstatus) -----
'   Gesamt: TempOutdoor, OutdoorSourceText, Connected, SeasonMode, SeasonText
'           CentralFlowTemp, CentralReturnTemp, MasterPumpOn, HeatDemand
'           SolarRoofTemp, SolarActive, StatusText, HeatReason, …
'   Listen (flexibel, 0..n):
'     Anlagenstatus.Aussensensoren      Name, Address, Value, HasValue
'     Anlagenstatus.Lueftungsanlagen    Name, AirRatio, TempSupplyAfterHeater, HxPercent, …
'     Anlagenstatus.Heizkreise          Name, TempFlow, RoomAverage, PumpOn, Setpoint, …
'     Anlagenstatus.SolarPuffer         Name, TempTop, TempBottom, ChargeValve, …
'     Anlagenstatus.Heizquellen         Name, Active, BurnerTemp, Fault, SourceKind, Online, ThermalPowerKw, ElectricalPowerKw, OperatingState, TempFlow, ...
'     Anlagenstatus.Warmwasser          Name, TempTop, TempBottom, Charge, Setpoint, …
'   Beispiel:
'     For Each lv In Anlagenstatus.Lueftungsanlagen
'         Log(lv.Name & " Zuluft " & lv.TempSupplyAfterHeater.ToString("0.0"))
'     Next
'
' ----- KnxPacketInfo (paket) -----
'   Address, Role, Key, Name, Label, DisplayName, Dpt
'   AsBool, AsPercent, AsTemperature (Rohdeutung, unabhängig vom DPT)
'   ValueText  Wert ohne Einheit nach DPT ("21", "1", "Fr 16:24:00"; DPT fehlt/unbekannt/Länge falsch: Hex "0x0C1A")
'   Value      typisiert wie GetKNXValue (Nothing wenn nicht dekodierbar); Numeric (Double?), Unit ("°C", "lx" …)
'   DisplayText mit Einheit/Text ("21 °C", "Ein", "Komfort", nicht dekodierbar "*UDEF*"); DptError <> "" bei falscher Datenlänge
'   Data       Rohbytes (Payload)
'   Source     Absender lesbar: "von 1.1.23, Schnittstelle 1" (fremdes Gerät, Schnittstelle n aus der Liste),
'              "KNX Control" (eigenes Telegramm), "Router von Schnittstelle 2" (vom Router weitergeleitet),
'              "manuell <Benutzer>" (Bool-Schaltfläche); leer = unbekannt.  SourceAddress = "1.1.23" (leer = unbekannt)
'              gilt auch für BoolWechsel(paket, …) – heißt der Parameter ev, entsprechend ev.Source:
'                If paket.Source.StartsWith("von 1.1.23") Then Log("1/1/10 von Taster 1.1.23")
'   Label = "Hauptpumpe (0/0/11)" wenn Name bekannt
'
' ----- MacroBoolEventInfo (ev) -----
'   Id, Name, Address ("macro:<id>"), Value, OldValue, First (erstes Schreiben seit Start), Time
'   Ausgelöst bei Wertwechsel (und erstem Schreiben). Ziele bekommen jeden Schreibvorgang.
'   Beispiel:
'     Sub MakroBool(ev As MacroBoolEventInfo, Anlagenstatus As PlantStatusSnapshot)
'         If ev.Id = "sperre_wp" Then Log("WP-Sperre " & ev.Value)
'     End Sub
'
' ----- ScheduleEventInfo (ev) -----
'   Kind ("ww"|"heizung"|"lueftung"), Name, CircuitId
'   FromId, FromName, ToId, ToName, IsDefault
'   Setpoint, SetpointBottom   ' noch änderbar
'   Apply                      ' False = Umschaltung verwerfen
' ============================================================

Registrierte Adressen (Zabbix LLD)

KeyNameAdresseDPTWertQuelle
modbus:topvex:active_y_seq Topvex Büsingen: Aktive Y-Sequenz modbus:topvex:active_y_seq 14 0 modbus
modbus:topvex:alarm_a Topvex Büsingen: A-Alarm modbus:topvex:alarm_a 1.001 Schalt Aus modbus
modbus:topvex:alarm_a:alarm Topvex Büsingen: A-Alarm (Alarm) modbus:topvex:alarm_a:alarm 1.005 Alarm Kein Alarm modbus
modbus:topvex:alarm_b Topvex Büsingen: B-Alarm modbus:topvex:alarm_b 1.001 Schalt Ein modbus
modbus:topvex:alarm_b:alarm Topvex Büsingen: B-Alarm (Alarm) modbus:topvex:alarm_b:alarm 1.005 Alarm Alarm modbus
modbus:topvex:alarm_c Topvex Büsingen: C-Alarm modbus:topvex:alarm_c 1.001 Schalt Ein modbus
modbus:topvex:alarm_c:alarm Topvex Büsingen: C-Alarm (Alarm) modbus:topvex:alarm_c:alarm 1.005 Alarm Alarm modbus
modbus:topvex:alarm_external Topvex Büsingen: Externer Alarm modbus:topvex:alarm_external 1.001 Schalt Aus modbus
modbus:topvex:alarm_external:alarm Topvex Büsingen: Externer Alarm (Alarm) modbus:topvex:alarm_external:alarm 1.005 Alarm Kein Alarm modbus
modbus:topvex:alarm_fire Topvex Büsingen: Feueralarm modbus:topvex:alarm_fire 1.001 Schalt Aus modbus
modbus:topvex:alarm_fire:alarm Topvex Büsingen: Feueralarm (Alarm) modbus:topvex:alarm_fire:alarm 1.005 Alarm Kein Alarm modbus
modbus:topvex:alarm_smoke Topvex Büsingen: Rauchalarm modbus:topvex:alarm_smoke 1.001 Schalt Aus modbus
modbus:topvex:alarm_smoke:alarm Topvex Büsingen: Rauchalarm (Alarm) modbus:topvex:alarm_smoke:alarm 1.005 Alarm Kein Alarm modbus
modbus:topvex:alarm_sum Topvex Büsingen: Sammelalarm (A/B/C) modbus:topvex:alarm_sum 1.001 Schalt Ein modbus
modbus:topvex:alarm_sum:alarm Topvex Büsingen: Sammelalarm (A/B/C) (Alarm) modbus:topvex:alarm_sum:alarm 1.005 Alarm Alarm modbus
modbus:topvex:ao_manual_a Topvex Büsingen: Hand-Ausgang Sequenz A modbus:topvex:ao_manual_a 14 0 modbus
modbus:topvex:ao_manual_b Topvex Büsingen: Hand-Ausgang Sequenz B modbus:topvex:ao_manual_b 14 0 modbus
modbus:topvex:co2 Topvex Büsingen: CO2 modbus:topvex:co2 14 800 modbus
modbus:topvex:energy_fan_power Topvex Büsingen: Leistung Ventilatoren modbus:topvex:energy_fan_power 14 0 modbus
modbus:topvex:ext_control Topvex Büsingen: Externe Steuerung (Ventilator-Vorgabe) modbus:topvex:ext_control 14 0 modbus
modbus:topvex:ext_run_high Topvex Büsingen: Verlängerter Betrieb High (DI) modbus:topvex:ext_run_high 1.001 Schalt Aus modbus
modbus:topvex:ext_run_low Topvex Büsingen: Verlängerter Betrieb Low (DI) modbus:topvex:ext_run_low 1.001 Schalt Aus modbus
modbus:topvex:ext_run_normal Topvex Büsingen: Verlängerter Betrieb Normal (DI) modbus:topvex:ext_run_normal 1.001 Schalt Aus modbus
modbus:topvex:ext_stop Topvex Büsingen: Extern-Stopp (DI) modbus:topvex:ext_stop 1.001 Schalt Aus modbus
modbus:topvex:fan_extract_ctrl Topvex Büsingen: Ventilator Abluft Stellsignal modbus:topvex:fan_extract_ctrl 14 0 modbus
modbus:topvex:fan_extract_out Topvex Büsingen: Ventilator Abluft Ausgang modbus:topvex:fan_extract_out 14 0 modbus
modbus:topvex:fan_extract_run Topvex Büsingen: Abluftventilator Betrieb/Motorschutz modbus:topvex:fan_extract_run 1.001 Schalt Aus modbus
modbus:topvex:fan_extract_speed Topvex Büsingen: Ventilator Abluft Stufe modbus:topvex:fan_extract_speed 14 0 modbus
modbus:topvex:fan_supply_ctrl Topvex Büsingen: Ventilator Zuluft Stellsignal modbus:topvex:fan_supply_ctrl 14 0 modbus
modbus:topvex:fan_supply_out Topvex Büsingen: Ventilator Zuluft Ausgang modbus:topvex:fan_supply_out 14 0 modbus
modbus:topvex:fan_supply_run Topvex Büsingen: Zuluftventilator Betrieb/Motorschutz modbus:topvex:fan_supply_run 1.001 Schalt Aus modbus
modbus:topvex:fan_supply_speed Topvex Büsingen: Ventilator Zuluft Stufe modbus:topvex:fan_supply_speed 14 0 modbus
modbus:topvex:fan_timechannel Topvex Büsingen: Zeitkanal Ventilatorstufe modbus:topvex:fan_timechannel 14 1 modbus
modbus:topvex:flow_exchanger Topvex Büsingen: Volumenstrom Tauscher modbus:topvex:flow_exchanger 14 -1 modbus
modbus:topvex:flow_extract Topvex Büsingen: Volumenstrom Abluft modbus:topvex:flow_extract 14 0 modbus
modbus:topvex:flow_supply Topvex Büsingen: Volumenstrom Zuluft modbus:topvex:flow_supply 14 0 modbus
modbus:topvex:freecool_day_limit Topvex Büsingen: Freie Kühlung: Außentemp. min Tag modbus:topvex:freecool_day_limit 9.001 Temp 22 °C modbus
modbus:topvex:freecool_high_limit Topvex Büsingen: Freie Kühlung: Außentemp. max Nacht modbus:topvex:freecool_high_limit 9.001 Temp 18 °C modbus
modbus:topvex:freecool_low_limit Topvex Büsingen: Freie Kühlung: Außentemp. min Nacht modbus:topvex:freecool_low_limit 9.001 Temp 10 °C modbus
modbus:topvex:freecool_room_limit Topvex Büsingen: Freie Kühlung: Raumtemp. min modbus:topvex:freecool_room_limit 9.001 Temp 18 °C modbus
modbus:topvex:humidity Topvex Büsingen: Feuchte Raum modbus:topvex:humidity 14 0 modbus
modbus:topvex:hx_defrost Topvex Büsingen: WRG Abtauen modbus:topvex:hx_defrost 1.001 Schalt Aus modbus
modbus:topvex:hx_efficiency Topvex Büsingen: WRG-Wirkungsgrad modbus:topvex:hx_efficiency 14 0 modbus
modbus:topvex:hx_power Topvex Büsingen: WRG Rückgewinnungsleistung modbus:topvex:hx_power 14 0 modbus
modbus:topvex:hx_rotation Topvex Büsingen: WRG Rotationswächter modbus:topvex:hx_rotation 1.001 Schalt Aus modbus
modbus:topvex:pressure_extract Topvex Büsingen: Druck Abluft modbus:topvex:pressure_extract 14 0 modbus
modbus:topvex:pressure_supply Topvex Büsingen: Druck Zuluft modbus:topvex:pressure_supply 14 0 modbus
modbus:topvex:runtime_eaf Topvex Büsingen: Laufzeit Abluftventilator modbus:topvex:runtime_eaf 14 0.1 modbus
modbus:topvex:runtime_saf Topvex Büsingen: Laufzeit Zuluftventilator modbus:topvex:runtime_saf 14 0.1 modbus
modbus:topvex:seq_a_mode Topvex Büsingen: Sequenz A Betriebsart modbus:topvex:seq_a_mode 14 2 modbus
modbus:topvex:seq_a_out Topvex Büsingen: Sequenz A Ausgang modbus:topvex:seq_a_out 14 0 modbus
modbus:topvex:seq_b_mode Topvex Büsingen: Sequenz B Betriebsart modbus:topvex:seq_b_mode 14 2 modbus
modbus:topvex:seq_b_out Topvex Büsingen: Sequenz B Ausgang modbus:topvex:seq_b_out 14 0 modbus
modbus:topvex:sp_co2 Topvex Büsingen: CO2-Soll modbus:topvex:sp_co2 14 1000 modbus
modbus:topvex:sp_eaf_pid Topvex Büsingen: Soll Abluftventilator-PID modbus:topvex:sp_eaf_pid 9.001 Temp 0 °C modbus
modbus:topvex:sp_extract Topvex Büsingen: Abluft-Soll modbus:topvex:sp_extract 9.001 Temp 22 °C modbus
modbus:topvex:sp_flow_eaf_high Topvex Büsingen: Volumenstrom-Soll Abluft High modbus:topvex:sp_flow_eaf_high 14 17667 modbus
modbus:topvex:sp_flow_eaf_low Topvex Büsingen: Volumenstrom-Soll Abluft Low modbus:topvex:sp_flow_eaf_low 14 17455 modbus
modbus:topvex:sp_flow_eaf_normal Topvex Büsingen: Volumenstrom-Soll Abluft Normal modbus:topvex:sp_flow_eaf_normal 14 17583 modbus
modbus:topvex:sp_flow_saf_high Topvex Büsingen: Volumenstrom-Soll Zuluft High modbus:topvex:sp_flow_saf_high 14 17667 modbus
modbus:topvex:sp_flow_saf_low Topvex Büsingen: Volumenstrom-Soll Zuluft Low modbus:topvex:sp_flow_saf_low 14 17455 modbus
modbus:topvex:sp_flow_saf_normal Topvex Büsingen: Volumenstrom-Soll Zuluft Normal modbus:topvex:sp_flow_saf_normal 14 17583 modbus
modbus:topvex:sp_humidity Topvex Büsingen: Feuchte-Soll modbus:topvex:sp_humidity 14 50 modbus
modbus:topvex:sp_pressure_eaf_high Topvex Büsingen: Druck-Soll Abluft High modbus:topvex:sp_pressure_eaf_high 14 750 modbus
modbus:topvex:sp_pressure_eaf_low Topvex Büsingen: Druck-Soll Abluft Low modbus:topvex:sp_pressure_eaf_low 14 250 modbus
modbus:topvex:sp_pressure_eaf_normal Topvex Büsingen: Druck-Soll Abluft Normal modbus:topvex:sp_pressure_eaf_normal 14 500 modbus
modbus:topvex:sp_pressure_saf_high Topvex Büsingen: Druck-Soll Zuluft High modbus:topvex:sp_pressure_saf_high 14 200 modbus
modbus:topvex:sp_pressure_saf_low Topvex Büsingen: Druck-Soll Zuluft Low modbus:topvex:sp_pressure_saf_low 14 100 modbus
modbus:topvex:sp_pressure_saf_normal Topvex Büsingen: Druck-Soll Zuluft Normal modbus:topvex:sp_pressure_saf_normal 14 200 modbus
modbus:topvex:sp_room Topvex Büsingen: Raum-Soll modbus:topvex:sp_room 9.001 Temp 21 °C modbus
modbus:topvex:sp_saf_pid Topvex Büsingen: Soll Zuluftventilator-PID modbus:topvex:sp_saf_pid 9.001 Temp 0 °C modbus
modbus:topvex:sp_summer_supply Topvex Büsingen: Zuluft-Soll Sommer modbus:topvex:sp_summer_supply 9.001 Temp 24 °C modbus
modbus:topvex:sp_supply Topvex Büsingen: Zuluft-Soll modbus:topvex:sp_supply 9.001 Temp 24 °C modbus
modbus:topvex:sp_supply_calc Topvex Büsingen: Zuluft-Soll berechnet modbus:topvex:sp_supply_calc 9.001 Temp 22 °C modbus
modbus:topvex:sp_supply_cool Topvex Büsingen: Zuluft-Soll Kühlen modbus:topvex:sp_supply_cool 9.001 Temp 22 °C modbus
modbus:topvex:sp_supply_heat Topvex Büsingen: Zuluft-Soll Heizen modbus:topvex:sp_supply_heat 9.001 Temp 22 °C modbus
modbus:topvex:sp_supply_max Topvex Büsingen: Zuluft-Soll Max (Kaskade) modbus:topvex:sp_supply_max 9.001 Temp 30 °C modbus
modbus:topvex:sp_supply_min Topvex Büsingen: Zuluft-Soll Min (Kaskade) modbus:topvex:sp_supply_min 9.001 Temp 14 °C modbus
modbus:topvex:summer_mode Topvex Büsingen: Sommerbetrieb modbus:topvex:summer_mode 1.001 Schalt Aus modbus
modbus:topvex:summer_outdoor Topvex Büsingen: Sommer/Winter-Umschaltung Außentemp. modbus:topvex:summer_outdoor 9.001 Temp 13 °C modbus

Log

22:29:01 Script kompiliert OK (Init/Tick/KNXPaket/Alternate/BoolWechsel/Zeitplan/MakroBool/ShutDown).