MargotKalinke

VB-Makro & Zabbix

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

Init OK Ticks: 159 Letzter Tick: 19:13:14 Adressen: 114
Zabbix Agent: Port 10052LLD: 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)
'   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
'   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>"
'
' ----- 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, ValueText
'   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
Analog_L_ftung_Abluft Analog Lüftung Abluft 2/0/10 5.001 78.8 config
Analog_L_ftung_W_rmetauscher Analog Lüftung Wärmetauscher 2/0/12 5.001 100 config
Analog_L_ftung_Zuluft Analog Lüftung Zuluft 2/0/11 5.001 80 config
Aussenlicht_gross_Lager_Werkstatt Aussenlicht gross Lager-Werkstatt 0/0/1 1.001 0 config
Aussentemp Aussentemp 1/1/0 9.001 7.9 config
B_ro_1_OG_Flurseite Büro 1 OG Flurseite 0/2/24 1.001 config
B_ro_1_OG_Stra_e Büro 1 OG Straße 0/2/23 1.001 config
B_ro_2_OG_Licht Büro 2 OG Licht 0/2/22 1.001 config
B_ro_3_OG_Licht_Flurseite Büro 3 OG Licht Flurseite 0/2/21 1.001 config
B_ro_3_OG_Licht_Stra_enseite Büro 3 OG Licht Straßenseite 0/2/20 1.001 config
Bewegung_Flur_Meldung Bewegung Flur (Meldung) 0/2/12 1.001 config
Bewegung_Veranstaltung Bewegung Veranstaltung 1/2/0 1.001 config
Datum Datum 1/3/1 11.001 config
FanExhaustStatus FanExhaustStatus 78.4 script
FanSupplyStatus FanSupplyStatus 80 script
Flur_OG_Licht Flur OG Licht 0/2/25 1.001 config
HeatExchangerStatus HeatExchangerStatus 100 script
HeatingCircuit.hk_3og.TempFlow HeatingCircuit.hk_3og.TempFlow 20.9 script
HeatingCircuit.hk_3og.TempReturn HeatingCircuit.hk_3og.TempReturn 21 script
Heizregister_Veranstaltung Heizregister Veranstaltung 2/0/17 1.001 1 config
HeizregisterVeranstaltung HeizregisterVeranstaltung 1 script
Helligkeit_aussen Helligkeit aussen 1/0/0 9.004 0.4 config
HelligkeitAussen HelligkeitAussen 0.4 script
IstDunkel IstDunkel 1/0/1 1.001 1 config
Klappe_Zuluft_3_Stock Klappe Zuluft 3 Stock 2/0/18 1.001 config
Konferenz_OG_Parkplatzseite Konferenz OG Parkplatzseite 0/2/13 1.001 config
Licht Licht 0/1/2 config
Licht_2 Licht 0/1/3 config
Licht_3 Licht 0/2/8 config
Licht_4 Licht 0/2/9 config
Licht_Bad_Arek Licht Bad Arek+ 0/1/1 1.001 0 config
Licht_Besprechnung Licht Besprechnung 0/2/6 1.001 config
Licht_Decke_Arek Licht Decke Arek 0/1/0 1.001 1 config
Licht_Flur Licht Flur 0/2/7 1.001 config
Licht_TAA_Links Licht TAA Links 0/2/5 1.001 config
Licht_TAA_Rechts Licht TAA Rechts 0/2/4 1.001 config
Licht_VHL_S Licht VHL-S 0/2/0 1.001 config
Licht_VHL_TL_VV Licht VHL TL VV 0/2/3 1.001 config
Licht_VHL1 Licht VHL1 0/2/1 1.001 config
Licht_VHL2 Licht VHL2 0/2/2 1.001 config
Motorstatus_Abluft Motorstatus Abluft 2/0/14 5.001 78.4 config
Motorstatus_W_rmetauscher Motorstatus Wärmetauscher 2/0/16 5.001 100 config
Motorstatus_Zuluft Motorstatus Zuluft 2/0/15 5.001 80 config
Notbetrieb_L_ftung Notbetrieb Lüftung 2/0/13 1.001 config
OG_Konferenz_Lager_Seite OG Konferenz Lager Seite 0/2/14 1.001 config
OutdoorTemp1 OutdoorTemp1 7.9 script
Pausenraum_Licht Pausenraum Licht 0/2/15 1.001 config
plant.air.ratio Luftmenge 80 system
plant.connected KNX verbunden 1 system
plant.demand Bedarf Hochbetrieb · WW Duschzeit system
plant.dhw.bottom WW unten 0 system
plant.dhw.heating WW heizen 0 system
plant.dhw.setpoint WW Soll 54 system
plant.dhw.top WW oben 0 system
plant.flow.actual Vorlauf Ist 20.9 system
plant.flow.setpoint Vorlauf Soll 37.9 system
plant.heat.demand Heizbedarf 1 system
plant.heat.source Aktive Heizquelle system
plant.heating.season Heizperiode 1 system
plant.high.summer Hochsommer 0 system
plant.hk.hk_3og.flow Heizkreis 3OG / Veranstaltung Vorlauf 20.9 system
plant.hk.hk_3og.pump Heizkreis 3OG / Veranstaltung Pumpe 1 system
plant.hk.hk_3og.return Heizkreis 3OG / Veranstaltung Rücklauf 21 system
plant.hk.hk_3og.room Heizkreis 3OG / Veranstaltung Raummittel 17.9 system
plant.hk.hk_3og.setpoint Heizkreis 3OG / Veranstaltung Soll 20 system
plant.hs.none.active Keine Wärmequelle in XML aktiv 0 system
plant.hs.none.burner Keine Wärmequelle in XML Brennertemp 0 system
plant.hs.none.fault Keine Wärmequelle in XML Störung 0 system
plant.hs.none.stage2 Keine Wärmequelle in XML Stufe2 0 system
plant.name Anlagenname MargotKalinke system
plant.room.setpoint Zimmer-Soll 20 system
plant.season Saison Winter (Schwellwert 10 °C, Außen 9.3 °C) system
plant.season.mode Saisonmodus Winter system
plant.solar.active Solar aktiv 0 system
plant.solar.buffer.max Puffer max 0 system
plant.solar.buffer.min Puffer min 0 system
plant.solar.roof Solar Dach 0 system
plant.status Status Heizperiode · Basis 75% <10+5% → 80% · Zuluft min 20.0 °C · WRG·Winter Max 100% · WRG·Winter Max 100% system
plant.temp.exhaust Abluft 14.9 system
plant.temp.outdoor Außentemperatur (Steuerung) 9.25 system

Log

19:13:14 Tick 159 · Außen 9.3 °C · KNX=True
19:12:43 Tick 158 · Außen 9.3 °C · KNX=True
19:12:13 Tick 157 · Außen 9.3 °C · KNX=True
19:11:43 Tick 156 · Außen 9.3 °C · KNX=True
19:11:13 Tick 155 · Außen 9.3 °C · KNX=True
19:10:43 Tick 154 · Außen 9.3 °C · KNX=True
19:10:13 Tick 153 · Außen 9.3 °C · KNX=True
19:09:43 Tick 152 · Außen 9.3 °C · KNX=True
19:09:13 Tick 151 · Außen 9.4 °C · KNX=True
19:08:43 Tick 150 · Außen 9.4 °C · KNX=True
19:08:12 Tick 149 · Außen 9.4 °C · KNX=True
19:07:42 Tick 148 · Außen 9.4 °C · KNX=True
19:07:12 Tick 147 · Außen 9.3 °C · KNX=True
19:06:42 Tick 146 · Außen 9.3 °C · KNX=True
19:06:12 Tick 145 · Außen 9.3 °C · KNX=True
19:05:42 Tick 144 · Außen 9.3 °C · KNX=True
19:05:12 Tick 143 · Außen 9.4 °C · KNX=True
19:04:42 Tick 142 · Außen 9.4 °C · KNX=True
19:04:12 Tick 141 · Außen 9.4 °C · KNX=True
19:03:41 Tick 140 · Außen 9.4 °C · KNX=True
19:03:11 Tick 139 · Außen 9.3 °C · KNX=True
19:02:41 Tick 138 · Außen 9.3 °C · KNX=True
19:02:11 Tick 137 · Außen 9.3 °C · KNX=True
19:01:41 Tick 136 · Außen 9.3 °C · KNX=True
19:01:13 Bool Licht Bad Arek+ (0/1/1): True → False
19:01:11 Tick 135 · Außen 9.3 °C · KNX=True
19:01:04 Bool Licht Bad Arek+ (0/1/1): False → True
19:00:41 Tick 134 · Außen 9.3 °C · KNX=True
19:00:11 Tick 133 · Außen 9.3 °C · KNX=True
19:00:00 Zeitplan ww: Default → Duschzeit
19:00:00 Zeitplan ww Default → Duschzeit
18:59:40 Tick 132 · Außen 9.3 °C · KNX=True
18:59:10 Tick 131 · Außen 9.3 °C · KNX=True
18:58:40 Tick 130 · Außen 9.4 °C · KNX=True
18:58:10 Tick 129 · Außen 9.4 °C · KNX=True
18:57:40 Tick 128 · Außen 9.4 °C · KNX=True
18:57:10 Tick 127 · Außen 9.4 °C · KNX=True
18:56:40 Tick 126 · Außen 9.4 °C · KNX=True
18:56:10 Tick 125 · Außen 9.4 °C · KNX=True
18:55:39 Tick 124 · Außen 9.4 °C · KNX=True
18:55:09 Tick 123 · Außen 9.4 °C · KNX=True
18:54:39 Tick 122 · Außen 9.4 °C · KNX=True
18:54:09 Tick 121 · Außen 9.5 °C · KNX=True
18:53:39 Tick 120 · Außen 9.5 °C · KNX=True
18:53:09 Tick 119 · Außen 9.5 °C · KNX=True
18:52:39 Tick 118 · Außen 9.5 °C · KNX=True
18:52:09 Tick 117 · Außen 9.5 °C · KNX=True
18:51:38 Tick 116 · Außen 9.5 °C · KNX=True
18:51:08 Tick 115 · Außen 9.5 °C · KNX=True
18:50:38 Tick 114 · Außen 9.5 °C · KNX=True
18:50:08 Tick 113 · Außen 9.5 °C · KNX=True
18:49:38 Tick 112 · Außen 9.5 °C · KNX=True
18:49:08 Tick 111 · Außen 9.5 °C · KNX=True
18:48:38 Tick 110 · Außen 9.5 °C · KNX=True
18:48:08 Tick 109 · Außen 9.5 °C · KNX=True
18:47:37 Tick 108 · Außen 9.6 °C · KNX=True
18:47:07 Tick 107 · Außen 9.6 °C · KNX=True
18:46:37 Tick 106 · Außen 9.6 °C · KNX=True
18:46:07 Tick 105 · Außen 9.7 °C · KNX=True
18:45:37 Tick 104 · Außen 9.7 °C · KNX=True
18:45:07 Tick 103 · Außen 9.7 °C · KNX=True
18:44:37 Tick 102 · Außen 9.7 °C · KNX=True
18:44:07 Tick 101 · Außen 9.7 °C · KNX=True
18:43:36 Tick 100 · Außen 9.7 °C · KNX=True
18:43:06 Tick 99 · Außen 9.7 °C · KNX=True
18:42:36 Tick 98 · Außen 9.7 °C · KNX=True
18:42:06 Tick 97 · Außen 9.7 °C · KNX=True
18:41:36 Tick 96 · Außen 9.7 °C · KNX=True
18:41:06 Tick 95 · Außen 9.7 °C · KNX=True
18:40:36 Tick 94 · Außen 9.7 °C · KNX=True
18:40:06 Tick 93 · Außen 9.7 °C · KNX=True
18:39:36 Tick 92 · Außen 9.7 °C · KNX=True
18:39:05 Tick 91 · Außen 9.7 °C · KNX=True
18:38:35 Tick 90 · Außen 9.7 °C · KNX=True
18:38:05 Tick 89 · Außen 9.7 °C · KNX=True
18:37:35 Tick 88 · Außen 9.7 °C · KNX=True
18:37:29 Bool Licht Bad Arek+ (0/1/1): True → False
18:37:05 Tick 87 · Außen 9.9 °C · KNX=True
18:36:35 Tick 86 · Außen 9.9 °C · KNX=True
18:36:05 Tick 85 · Außen 9.9 °C · KNX=True