Loxone Konfiguration und KI / Google Gemini - hat das schon mal jemand probiert?
Einklappen
X
-
Hallo, habe mich gerade von der Google KI bei einer Änderung "beraten" lassen. Danach hat sie mich gefragt ob sie sonst noch was tun kann und ich bin auf die Idee gekommen, meine Config Datei überprüfen zu lassen. Die KI hat zu meiner Überrasschung auch gleich gesagt das sie das kann. Dann hat aber mein Gehirn gesagt: Stehen da Dinge in der Datei die ich nicht einfach so rausposaunen will? User Passwort Netzwerk etc.? Und die KI sagt, ja das steht alles da drin. Daraufhin habe ich gegoogelt und bin hier gelandet. War also nicht der erste :-). Frage also in die Runde: Wie kann ich am besten meine Datei "anonymisieren? Die gleiche Frage müsste sich ja stellen wenn man sie zum Support schickt ... -
Habe jetzt am Wochenende mit Claude Desktop und Fable 5 meine Config prüfen lassen. Auf einem eigenen, frischen Rechner und mit zuvor geänderten Passwörtern die ich dann später wieder zurücksetze. Dinge ergänzt. Z. B. Steht schon seit Ewigkeiten der Wechsel meiner Froggit Wetterstation hin zu Ecowitt an. Davor bin ich immer zurückgeschreckt, weil der Aufwand und die Änderungen so groß waren. Aber die KI hat das ganz gut hinbekommen und schon interessant wie die KI in der Loxone Config Bausteine anlegt, Drähte zieht etc. Schon nice. Nicht alles läuft aber auf ersten Anhieb perfektKommentar
-
Die Claude Desktop hat mir gerade sportpreisoptimiertes Laden eingebaut. Ist schon faszinierend wie die KI das in Loxone Config anlegt. Zwischendurch Zugriff auf den Wechselrichter will um dort die Modbuskonfiguration zu prüfen. Manchmal funktioniert das Drahtziehen in der Loxone Config nicht da die KI die Module zu nah aneinander oder auch direkt übereinander anlegt. Wir haben uns darauf geeinigt, dass die KI die Bausteine anlegt und mir dann eine Schritt für Schritt Anleitung schreibt, was ich mich was verbinden soll.
Ist aber nicht alles gleich beim ersten Mal perfekt, z.B. wollte ich, dass um eine bestimmte Uhrzeit alle Musikzonen auf 40% Lautstärke gesetzt werden. Hat zwar auch geklappt, allerdings waren dann auch alle Zonen im die Uhrzeit auch wirklich an. Nicht optimal. Hat einen zweiten Anlauf und den Link auf die Loxone KB zu den Bausteinen und deren Eingänge und Ausgänge gebraucht bis die KI gesehen hat, dass es dafür einen eigenen Eingang gibt der bei Start mit einem vorgegebenem % beginnt. Aber immerhin. -
Fable 5 mit zunächst Pro, jetzt Max (mache ich für einen Monat). Wenn ich meine Zeitersparnis sehe oder auch, wenn ich dafür jemanden hätte bezahlen müssen, wäre das viel teurer gekommen.
Habe jetzt Funktionen wie:
- Auto soll um 16 Uhr aufgeladen sein; lade zunächst nur mit PV-Überschuss; 30 Minuten vor 16 Uhr lade mit voller Netzpower.
- berücksichtige Regen der nächsten 3 Tage bei automatischer Bewässerung
- spiele für 30 Minuten ein Einschlaflied bei Taster oder Appanforderung
- PV-Überschuss Wallbox, Wärmepumpe; zuschaltbar auch spotpreisoptimiert
- Schneewarnung; Glättewarnung
Manches, was schon ewig halb fertig war, wurde jetzt fertig.
Kann evtl. 1 Woche Pro verschenken, wenn man noch keinen Account hat.Zuletzt geändert von LoxMunich; vor 3 Tagen.👍 1
-
-
Vielleicht hilft es ja jemandem:
Code:# Loxone-Baustein-Referenz (aus Projektdatei) Quelle: eigene .Loxone-Datei ## Regeln für KI-gestützte Bearbeitung 1. Bestehende Bausteine ändern: immer vorhandene Connector-UUIDs wiederverwenden - nie neu erzeugen. 2. Neue Bausteine anlegen: Connector-Layout (K-Name, Segment-3-Nummer, Index-Byte im 4. Segment) exakt von einer bestehenden Instanz desselben Typs UND derselben Konfiguration klonen. 3. Das Index-Byte (Beginn 4. UUID-Segment) bestimmt, an welchem Ein-/Ausgang eine Verbindung landet. Peripherie-Objekte (Segment beginnt mit ff) folgen anderem Schema. 4. DYNAMISCHE TYPEN (nur die konkrete Instanz als Vorlage verwenden!): DayTimer, EFM, Page, SpotOpt, State, Text 5. Fehlt ein Baustein-Typ im Projekt: Dummy-Instanz in Loxone Config platzieren, lokal speichern, klonen. 6. Nach jeder Änderung Datei in Config öffnen und sichten, BEVOR hochgeladen wird. 7. Nach dem Schreiben in den Ordner: Hash/Datei-Ende doppelt prüfen. 8. Referenzen auf System-/Zeitfunktionsobjekte vermeiden - lokale Bausteine je Seite (z. B. Startimpuls). 9. Eingänge akzeptieren mehrere Quellen: Nc="n" + n x <In> (ODER-verknüpft). 10. Formula-Bausteine: Funktionsnamen sind CASE-SENSITIV und müssen GROSS sein (LN, SIN, COS, TAN, ARCSIN, ARCCOS, ARCTAN, SQRT, ABS, MIN, MAX, EXP, PI). Kleinschreibung ("ln(", "arcsin(") ergibt „Ungültige Formel". MIN/MAX-Argumente mit ";" trennen. Zusätzlich Valid="true" im XML setzen — bei Valid="false" zeigt Config „Ungültige Formel", bis man im Formeleditor einmal OK klickt (Meldung ist nur Anzeige, wenn die Formel syntaktisch stimmt). ## K-Name -> Index-Byte je Typ (häufigster Wert; * = dynamisch; ! = mehrdeutig) - **AMemory**: Input=00, Trigger=01, Reset=02, Remanence=03, AQ=04 - **Access**: ExternalID=01, Disable=ff, PulseTime=ff, Q=ff, Qd=ff, TQ=ff, TrTime=ff, Trigger=ff - **Actor**: I=ff - **ActorCaption**: I=00 - **Alarm**: AQ=ff, AQr=ff, Active=ff, ActiveDelay=ff, ActiveDelayP=ff, ActiveOO=ff, ActiveOOP=ff, ActiveP=ff, AutoConfirm=ff, Confirm=ff, Delay=ff, DisMv=ff, HI1=ff, HI2=ff, HI3=ff, HI4=ff, I1=ff, I2=ff, I3=ff, I4=ff, I5=ff, IInit=ff, Inactive=ff, InputDisable=ff, MaxDurOut=ff, OutTime=ff, OutputAPI=ff, Q=ff, Q1=ff, Q2=ff, Q3=ff, Q4=ff, Q5=ff, Q6=ff, QT=ff, Qo=ff, Remanence=ff, TI=ff, TM=ff, TQ=ff, TQ1=ff, TQ2=ff, TQ3=ff, TQ4=ff, TQ5=ff, TQ6=ff, TTS=ff, WI2=ff - **AlarmClock**: AQs=ff, Acknowledge=ff, AlarmTime=ff, BrightAct=ff, BrightInact=ff, Deactivate=ff, OutputAPI=ff, ParWakeAlarmSloping=ff, ParWakeAlarmSound=ff, ParWakeAlarmVolume=ff, PrepTime=ff, QMe=ff, QTa=ff, QTe=ff, QTna=ff, QTp=ff, Qa=ff, Qat=ff, Remanence=ff, Reset=ff, RtD=ff, Snooze=ff, SnoozeTime=ff, TMe=ff, TgMe=ff, VIN1=ff - **AnalogInputCaption**: AQ=ff, Q=ff - **AnalogOutputCaption**: I=ff - **AnalogScaler**: AQ=ff, Dst1=ff, Dst2=ff, Input=ff, Src1=ff, Src2=ff - **AnalogThresholdTrigger**: Input=00, On=01, Off=02, Remanence=03, PulseTime=04, Q=05, RisingEdge=06, FallingEdge=07 - **And**: I1=00, I2=01, Q=02 - **ApiActor**: I=00 - **AutoJalousie**: Rdd=1c, TargetPos=2e, AutMode=ff, AutoShade=ff, AutoShadeEnd=ff, AutoShadeTime=ff, Back=ff, DblClk=ff, Deadtime=ff, Dir=ff, DirTol=ff, DirTol2=ff, EnAutoShade=ff, EndDown=ff, EndUp=ff, Gesture=ff, InputDisable=ff, InputTrigger=ff, InputTriggerDown=ff, InputTriggerUp=ff, ManualLamelle=ff, ManualPosition=ff, MinMove=ff, MinPulse=ff, OutputAPI=ff, OutputAutoShade=ff, OutputCombined=ff, OutputDown=ff, OutputLPos=ff, OutputLock=ff, OutputPos=ff, OutputSafety=ff, OutputUp=ff, ReactAutoShade=ff, SO=ff, SRoff=ff, SSoff=ff, Safety=ff, Shade=ff, Space=ff, Stop=ff, TimeBlock=ff, TimeEnd=ff, TimeEndDown=ff, TurnOffset=ff, Type=ff, WP=ff, Width=ff, Window=ff - **AutoPilot**: Input=ff, output=ff - **AutopilotRule**: A=ff, InputTrigger=ff, On=ff, OutputAPI=ff, Q=ff, Reset=ff, run=ff - **Average**: AQ=ff, Input1=ff, Input2=ff, Input3=ff, Input4=ff - **Avg**: AQ=ff, Input=ff, Max=ff, Remanence=ff, Reset=ff, Time=ff (KI-Annahme 12.07. für Neubauten: Input=00, Reset=01, Remanence=02, Time=03, Max=04, AQ=05 — entspricht der XML-Reihenfolge; verwendet in „Mittelwert Windgeschwindigkeit", live prüfen!) - **Calendar**: Q=ff - **CalendarCaption**: I=ff, Q=ff - **CalendarEntry**: I=ff, Q=ff - **Central**: AutoShade=ff, Call=ff, DisAutoShade=ff, Disable=ff, EndDown=ff, EndUp=ff, Gesture=ff, JalAlarm=ff, LiAlarm=ff, LiOff=ff, LiOn=ff, QAutoShade=ff, QCall=ff, QDisAutoShade=ff, QDisable=ff, QEndDown=ff, QEndUp=ff, QGesture=ff, QJaAlarm=ff, QLiAlarm=ff, QLiOff=ff, QLiOn=ff, QReactAutoShade=ff, QSafety=ff, QShade=ff, QSound=ff, QStop=ff, ReactAutoShade=ff, Safety=ff, Shade=ff, Sound=ff, Stop=ff - **CentralLight**: OutActive=16, Alarm=ff, AlarmClock=ff, EnMove=ff, I1=ff, I2=ff, I3=ff, I4=ff, InputDisable=ff, InputTriggerDown=ff, InputTriggerUp=ff, On=ff, OutputAPI=ff, Reset=ff, RtD=ff, Sel1=ff, Sel2=ff, Sel3=ff, Sel4=ff, Sel5=ff, Sel6=ff, Sel7=ff, Sel8=ff, Select=ff - **CentralMusic**: Cs=1f, DblClk=1f, IgnoreROff=20, OutActive=22, Alarm=ff, Bell=ff, Buzzer=ff, DisMv=ff, Firealarm=ff, Gesture=ff, InputDisable=ff, Mute=ff, NextSong=ff, NextSource=ff, OutputAPI=ff, Pause=ff, Play=ff, PowerOff=ff, PowerOn=ff, PrevSong=ff, Progress=ff, Repeat=ff, Reset=ff, RtD=ff, Shuffle=ff, Sleeptimer=ff, Source=ff, Stop=ff, SvPower=ff, TTS=ff, Trigger=ff, VolMinus=ff, VolPlus=ff, Volume=ff, voldown=ff, volup=ff - **CentralShade**: OutOpen=0f, OutClose=10, AutoShade=ff, EnAutoShade=ff, EndDown=ff, EndUp=ff, Gesture=ff, InputDisable=ff, InputTrigger=ff, InputTriggerDown=ff, InputTriggerUp=ff, ManualLamelle=ff, ManualPosition=ff, OutputAPI=ff, ReactAutoShade=ff, Safety=ff, Shade=ff, Stop=ff - **Comm1wire**: Q=ff - **Constant**: AQ=ff - **ConstantCaption**: AQ=ff - **Counter**: Trigger=00, Reset=01, Remanence=02, EndValue=03, Mode=04, Q=05, AQ=06 - **DateTime**: Q=ff - **Day**: Q=ff - **Day2009**: Q=ff - **DayOfWeek**: Q=ff - **DayTimer** *: InputTrigger=00, Reset=01, RtD=02, PulseTime=03!, Remanence=03!, Manual=04!, Mode=05!, AQ=07, Qon=08, Qoff=09, AQm=0a, AQmt=0b, OutputAPI=0c - **Daylight**: Q=ff - **Daylight2**: Q=ff - **DigitalIn**: Q=ff, Qe=ff - **DigitalOut**: In=ff - **Dimmer**: I=ff - **Door**: InputPo=07, PoPos=14, Close=ff, EndClose=ff, EndOpen=ff, InputDisable=ff, InputStop=ff, IsClosed=ff, IsOpen=ff, Light=ff, Open=ff, OutputAPI=ff, OutputActive=ff, OutputClose=ff, OutputOpen=ff, OutputPos=ff, OutputTrigger=ff, PulseClose=ff, PulseHigh=ff, PulseLow=ff, PulseOpen=ff, Remanence=ff, T5=ff, TimeBlock=ff, TimeHigh=ff, TimeLow=ff, Trigger=ff, Type=ff - **Doorcontroller**: OutputAPI=ff, Q1=ff, Q2=ff, Q3=ff, Qb=ff, Reset=ff, Timeout=ff, TriggerFan=ff - **EFM** *: Pf=00, R=00!, Mr1=01, Pre=01, Mr2=02, Pri=02, CO2=03, Mro1=04, OGpwr=04, Mro2=05, OPpwr=05, OCpwr=06, OPf=06, OSpwr=06, OEd=07, OMr1=07, OId=08, ORd1=08, OPd=09, ORld1=09, OCd=0a, ORw1=0a, ORlw1=0b, OScd=0b, OCo2d=0c, ORm1=0c, ORlm1=0d, OYd=0d, ORy1=0e, OSc=0e, ORly1=0f, OYt=0f, OMr2=10, Rest=10, ORd2=11, OutputAPI=11!, ORld2=12, ORw2=13, ORlw2=14, ORm2=15, ORlm2=16, ORy2=17, ORly2=18 - **EdgeDetection**: Input=00, PulseTime=01, Edge=02, RisingEdge=03, FallingEdge=04 - **Energy**: AQ=ff, AQ1=ff, AQ2=ff, AQ3=ff, AQ4=ff, AQ5=ff, AQ6=ff, AQ7=ff, AQ8=ff, AQ9=ff, AQa=ff, AQp=ff, Abs=ff, F=ff, Factor=ff, Offset=ff, OutputAPI=ff, P=ff, Reset=ff, Time=ff, Tr=ff, V=ff - **EnergyManager2**: Gpwr=00, Ppwr=01, Spwr=02, Soc=03, Prio=04, Recalc=05, IL1=06, IL2=07, IL3=08, IL4=09, IL5=0a, IL6=0b, IL7=0c, IL8=0d, IL9=0e, IL10=0f, IL11=10, IL12=11, Reset=12, O=13, MinSoc=14, MaxSpwr=15, OL1=16, OL2=17, OL3=18, OL4=19, OL5=1a, OL6=1b, OL7=1c, OL8=1d, OL9=1e, OL10=1f, OL11=20, OL12=21, ONext=22, OMinSoc=23, API=24 - **Equal**: Input1=ff, Input2=ff, Q=ff - **Eveningtwilight**: Q=ff - **Formula**: Input1=00, Input2=01, Input3=02, Input4=03, AQ=04, TQ=05 - **GenAactor**: I=00 - **GenActor**: I=00 - **GenAsensor**: AQ=00, Q=01 - **GenDev**: Q=00 - **GenSensor**: Q=00, Qe=01 - **GenTActor**: Text=00 - **GenTSensor**: Text=00 - **GlobalStates**: AI=ff, AQ=ff, Q=ff - **GreaterEqual**: Input1=00, Input2=01, Q=02 - **HVACController**: OutAverageTemp=23, Average=ff, Boost=ff, CoolAvailable=ff, Error=ff, Fan=ff, FanDelay=ff, FilterAck=ff, HeatAvailable=ff, ManualHeat=ff, Mode=ff, OnThreshold=ff, OutCool1=ff, OutCool2=ff, OutError=ff, OutFan=ff, OutFilter=ff, OutHeat1=ff, OutHeat2=ff, OutSecHeat=ff, OutValve=ff, OutputAPI=ff, PulseThreshold=ff, SecHeat=ff, ServiceMode=ff, Stop=ff, Temp=ff, TempAdditional=ff, TempAvg=ff, TempLimitC=ff, TempLimitH=ff, TempMin=ff, TimeAddional=ff, TimeFilter=ff, TimePulseOff=ff, TimePulseOn=ff, TimePump=ff, ValveDelay=ff - **HeatIRoomController2**: InCo2=0c, InHumid=0d, inFan=0e, inAirDir=0f, TComfortHC=10, TSave=14, TExcess=21, AQtm=34, Qb=35, AMode=ff, AQc=ff, AQc1=ff, AQc2=ff, AQc3=ff, AQh=ff, AQh1=ff, AQh2=ff, AQh3=ff, AQhc=ff, AQhc1=ff, AQhc2=ff, AQhc3=ff, AQhm=ff, AQs=ff, AQt=ff, Comfort=ff, DisMv=ff, Input=ff, Move=ff, OutputAPI=ff, Qa=ff, Qe=ff, Qs=ff, Reset=ff, RtD=ff, Save=ff, Save2=ff, TCCelvin=ff, TComfort=ff, TComfortC=ff, TDeepSleep=ff, TDiff=ff, THCelvin=ff, TMax=ff, TPWM=ff, TSaveL=ff, TSaveU=ff, TShadeCool=ff, TShadeHeat=ff, TWin=ff, Temp=ff, TempO=ff, TimeC=ff, TimeMove=ff, TimeMv=ff, TimeS=ff, Window=ff - **Heatmixer2**: TimeActive=0c, AQb=ff, AQf=ff, AQi=ff, AQl=ff, AQr=ff, AQt=ff, Boost=ff, BufferInc=ff, Gain=ff, InBuffer=ff, Max=ff, Min=ff, Outer=ff, OutputAPI=ff, PrevInc=ff, Qe=ff, Qp=ff, Stop=ff, Transconductance=ff, Translate=ff, Treshold=ff, TxQr=ff - **Hour**: Q=ff - **HourCounter**: AQ=ff, AQl=ff, AQr=ff, AQs=ff, InputEnable=ff, InputResetAll=ff, Maintenance=ff, OutputAPI=ff, Q=ff, Reset=ff, Unit=ff - **ImpulseDay**: Q=ff - **ImpulseEveningtwilight**: Q=ff - **ImpulseHour**: Q=ff - **ImpulseMinute**: Q=ff - **ImpulseMonth**: Q=ff - **ImpulseMorningtwilight**: Q=ff - **ImpulseSecond**: Q=ff - **ImpulseSunrise**: Q=ff - **ImpulseSunset**: Q=ff - **ImpulseYear**: Q=ff - **InputCaption**: Q=ff, Qe=ff - **InputRef**: AI=00, I=01, AQ=02, Q=03 - **Int**: AQ=ff, Input=ff, Mode=ff - **IntercomDevice**: I=ff - **Irrigation**: A=ff, AIv=ff, AQv=ff, MaxP=ff, MaxR=ff, OutputAPI=ff, Qp=ff, Qv1=ff, Qv2=ff, Qv3=ff, Qv4=ff, Qv5=ff, Qv6=ff, Qv7=ff, Qv8=ff, Ra=ff, Reset=ff, Rf=ff, Tv1=ff, Tv2=ff, Tv3=ff, Tv4=ff, Tv5=ff, Tv6=ff, Tv7=ff, Tv8=ff - **LanInt**: Q=ff - **Less**: Input1=ff, Input2=ff, Q=ff - **LightController2**: I5=04, I6=05, I7=06, I8=07, AQ1=ff, AQ10=ff, AQ11=ff, AQ12=ff, AQ13=ff, AQ14=ff, AQ15=ff, AQ16=ff, AQ17=ff, AQ18=ff, AQ19=ff, AQ2=ff, AQ20=ff, AQ3=ff, AQ4=ff, AQ5=ff, AQ6=ff, AQ7=ff, AQ8=ff, AQ9=ff, Alarm=ff, AlarmBrightness=ff, AlarmClock=ff, AlarmClockPeriod=ff, AlarmPeriod=ff, Brightness=ff, BrightnessLimit=ff, DayMaxTemp=ff, DayMinTemp=ff, EnMove=ff, FadingTime=ff, I1=ff, I2=ff, I3=ff, I4=ff, InputDisable=ff, InputTriggerDown=ff, InputTriggerUp=ff, MasterBr=ff, Max=ff, MaxP=ff, Min=ff, Move=ff, MoveIgnore=ff, MoveOn=ff, MoveScene=ff, MoveTimeout=ff, NoLast=ff, On=ff, OutputAPI=ff, OutputReset=ff, OutputResetAll=ff, Presence=ff, RGBalt=ff, Remanence=ff, Reset=ff, RtD=ff, Scene=ff, SceneMixTime=ff, Sel1=ff, Sel2=ff, Sel3=ff, Sel4=ff, Sel5=ff, Sel6=ff, Sel7=ff, Sel8=ff, Select=ff, Step=ff, Steptime=ff, Wrap=ff - **LongClick**: AQ=ff, InputTrigger=ff, Max=ff, Q1=ff, Q2=ff, Q3=ff, Q4=ff, Remanence=ff, Reset=ff, Time=ff, V1=ff, V2=ff, V3=ff, V4=ff - **Lox1wireAsensor**: AQ=ff, Q=ff - **Lox1wireDevice**: AQ=ff, Q=ff - **LoxCaption**: Q=00, I=ff - **LoxDIMM**: Q=ff - **LoxDeviceCaption**: I=ff - **LoxLIVE**: Q=ff - **LoxMORE**: Q=ff - **LoxREL**: Q=ff - **MTablet**: Q=00 - **MediaClient**: Alarm=ff, AlarmVol=ff, Bell=ff, BellVol=ff, BuzzVol=ff, Buzzer=ff, DblClk=ff, DefVol=ff, DisMv=ff, FRoomOff=ff, Firealarm=ff, Gesture=ff, InputDisable=ff, MaxVol=ff, Move=ff, MoveIgnore=ff, MoveOn=ff, MoveTimeout=ff, Mute=ff, NextSong=ff, NextSource=ff, OPowerOff=ff, OPowerOn=ff, OutputAPI=ff, Pause=ff, Play=ff, Power=ff, PowerOff=ff, PowerOn=ff, PrevSong=ff, Progress=ff, RQ=ff, RaQ=ff, RemSleep=ff, Repeat=ff, RepeatFirst=ff, RepeatRate=ff, Reset=ff, Shuffle=ff, Sleeptimer=ff, Source=ff, Src=ff, Stop=ff, SvPower=ff, TTS=ff, TTSVol=ff, TimeEvent=ff, TimeOutOff=ff, TimeSleep=ff, Trigger=ff, Vol=ff, VolMinus=ff, VolPlus=ff, Volume=ff, VolumeStep=ff - **Memory**: Input=00, AQ=01, Q=02 - **MemoryCaption**: I=ff, Q=ff - **MeterAbsBi**: Pf=00, Mr1=01, Mr2=02, R=03, Mro1=04, Mro2=05, OPf=06, OMr1=07, ORd1=08, ORld1=09, ORw1=0a, ORlw1=0b, ORm1=0c, ORlm1=0d, ORy1=0e, ORly1=0f, OMr2=10, ORd2=11, ORld2=12, ORw2=13, ORlw2=14, ORm2=15, ORlm2=16, ORy2=17, ORly2=18, OutputAPI=19 - **MeterAbsSt**: Pf=00, Mr1=01, Mr2=02, Slvl=03, R=04, Mro1=05, Mro2=06, OPf=07, OMr1=08, ORd1=09, ORld1=0a, ORw1=0b, ORlw1=0c, ORm1=0d, ORlm1=0e, ORy1=0f, ORly1=10, OMr2=11, ORd2=12, ORld2=13, ORw2=14, ORwl2=15, ORm2=16, ORlm2=17, ORy2=18, ORly2=19, OSlvl=1a, OutputAPI=1b - **MeterAbsUni**: Pf=00, Mr=01, R=02, Mro=03, OPf=04, OMr=05, ORd=06, ORld=07, ORw=08, ORlw=09, ORm=0a, ORlm=0b, ORy=0c, ORly=0d, OutputAPI=0e - **Minute**: Q=ff - **ModbusAActor**: I=00 - **ModbusASensor**: Q=00, Qe=01 - **ModbusDev**: AQ=00, Q=00, Qe=01 - **ModbusServer**: Q=00 - **Mode**: I=ff, Q=ff - **ModeCaption**: I=ff, Q=ff - **Monoflop**: InputTrigger=ff, Q=ff, Remanence=ff, Reset=ff, Time=ff - **Month**: Q=ff - **Morningtwilight**: Q=ff - **Mult**: Input1=00, Input2=01, AQ=02 - **MultiClick**: AQ=ff, InputTrigger=ff, Max=ff, Q1=ff, Q2=ff, Q3=ff, Q4=ff, Remanence=ff, Reset=ff, Time=ff, V1=ff, V2=ff, V3=ff, V4=ff - **MultiMediaServer**: Q=ff - **MusicZone**: I=ff - **NightTime**: Q=ff - **Not**: I=00, Q=01 - **OffDelay**: InputTrigger=ff, Q=ff, Remanence=ff, Reset=ff, Time=ff - **OnDelay**: InputTrigger=00, Reset=01, Remanence=02, Time=03, Q=04 - **OnPulseDelay**: Delay=ff, InputTrigger=ff, Q=ff, Remanence=ff, Reset=ff, Time=ff - **Online**: Q=00 - **Or**: I1=00, I2=01, Q=02 - **OutputCaption**: I=ff - **OutputRef**: AI=00, AQ=01 - **OutputRefLM**: AI=00, AQ=01 - **OvertempShutdown**: Q=ff - **PButtonT**: InputTrigger=00, Reset=01, InputDisable=02, Remanence=03, Time=04, Q=05, OutputAPI=06 - **Page** *: AI=00, InputTrigger=00, Pf=00, AQ=01!, I=01, Mr1=01, Reset=01, Mr2=02, Remanence=02, Q=03!, Slvl=03, Time=03, R=04, Mro1=05, Mro2=06, OPf=07, OMr1=08, ORd1=09, ORld1=0a, ORw1=0b, ORlw1=0c, ORm1=0d, ORlm1=0e, ORy1=0f, ORly1=10, OMr2=11, ORd2=12, ORld2=13, ORw2=14, ORwl2=15, ORm2=16, ORlm2=17, ORy2=18, ORly2=19, OSlvl=1a, OutputAPI=1b, OutAverageTemp=23, A=ff, Average=ff, Boost=ff, CoolAvailable=ff, Error=ff, Fan=ff, FanDelay=ff, FilterAck=ff, HeatAvailable=ff, ManualHeat=ff, Mode=ff, On=ff, OnThreshold=ff, OutCool1=ff, OutCool2=ff, OutError=ff, OutFan=ff, OutFilter=ff, OutHeat1=ff, OutHeat2=ff, OutSecHeat=ff, OutValve=ff, PulseThreshold=ff, SecHeat=ff, ServiceMode=ff, Stop=ff, Temp=ff, TempAdditional=ff, TempAvg=ff, TempLimitC=ff, TempLimitH=ff, TempMin=ff, TimeAddional=ff, TimeFilter=ff, TimePulseOff=ff, TimePulseOn=ff, TimePump=ff, ValveDelay=ff, run=ff - **Ping**: InputDisable=ff, Online=ff, PingTime=ff, TimeoutTime=ff, Timeouts=ff - **PlaceGroupCaption**: I=ff, Q=ff - **Plugin**: Q=00 - **PulseAt**: InputDisable=00, Remanence=01, Time=02, Q=03, OutputAPI=04 - **PulseGen**: InputEnable=00, InputInvert=01, Remanence=02, TimeHigh=03, TimeLow=04, Q=05 - **PushButton**: InputTrigger=00, On=01, Reset=02, InputDisable=03, Remanence=04, Q=05, Qon=06, Qoff=07, OutputAPI=08 - **PushButton2Sel**: InputTrigger 1=00, InputTrigger 2=01, InputPos=02, Reset=03, InputDisable=04, Min=05, Max=06, Step=07, Remanence=08, Repeat=09, Def=0a, AQ=0b, OutputAPI=0c - **Radio**: InputTrigger 1=00, InputTrigger 2=01, InputTrigger 3=02, InputTrigger 4=03, InputTrigger 5=04, InputTrigger 6=05, InputTrigger 7=06, InputTrigger 8=07, InputTriggerP=08, InputTriggerM=09, InputSel=0a, Reset=0b, InputDisable=0c, Remanence=0d, Max=0e, Mode=0f, Q1=10, Q2=11, Q3=12, Q4=13, Q5=14, Q6=15, Q7=16, Q8=17, AQ=18, OutputAPI=19 - **RandomGen**: InputEnable=00, Remanence=01, TimeOn=02, TimeOff=03, Q=04 - **Second**: Q=ff - **SecondsBoot**: Q=ff - **SensorCaption**: Q=00, Qe=01 - **SmokeAlarm**: AlarmDelay=ff, Autoconfirm=ff, Confirm=ff, InputAirAnalog=ff, InputAirDigitalS=ff, InputAirDigitalW=ff, InputAlarm=ff, InputAlarmS=ff, InputAlarmW=ff, InputTemp=ff, MaxDuration=ff, MaxTemp=ff, Mute=ff, OutActive=ff, OutAlarm1=ff, OutAlarm2=ff, OutAlarmTest=ff, OutHorn=ff, OutNumAlarms=ff, OutSilent=ff, OutText=ff, OutTime=ff, OutputAPI=ff, Remanence=ff, Reset=ff, Servicemode=ff - **SpotOpt** *: R=00, Tr=01, U0=02, U1=03, U2=04, U3=05, U4=06, U5=07, U6=08, U7=09, U8=0a, U9=0b, U10=0c, U11=0d, U12=0e, U13=0f, U14=10, U15=11, U16=12, U17=13, U18=14, U19=15, U20=16, U21=17, U22=18, U23=19, Tn=1a, Ta=1b, Mrt=1c, Mvh=1c!, Var1=1d!, Var2=1e!, Act=1f!, Uc=20!, vHigh=21!, High=22!, Low=23!, vLow=24!, Max=25!, Min=26!, Avg=27!, Nv=28!, OutputAPI=28! - **StairwayLS**: InputTrigger=00, On=01, Reset=02, InputDisable=03, TimeHigh=04, TimeWarn=05, Remanence=06, WarnTime=07, Q=08, OutputAPI=09 - **StartPulse**: Q=00 - **State** *: I1=00, I2=01, I3=02, I4=03, I5=04, TQ=04!, AQ=05!, I6=05, I7=06, OutputAPI=06!, I8=07 - **StateV**: AQ=ff, I=ff - **SunAltitude**: Q=ff - **SunAzimuth**: Q=ff - **Sunrise**: Q=ff - **Sunset**: Q=ff - **Switch2Button**: InputDisable=ff, InputTrigger=ff, On=ff, OutputAPI=ff, Q=ff, Qoff=ff, Qon=ff, Reset=ff, Time=ff - **SysTemp**: AQ=ff, Q=ff - **SysVar**: AI=00, AQ=01, Q=02 - **TaskCaption**: I=ff - **Text** *: AI=00, I1=00, Input=00, Input1=00, InputTrigger=00, Pf=00, Q=00!, AQ=01!, ExternalID=01, I2=01, Input2=01, Mr1=01, On=01, Reset=01!, I3=02, Mr2=02, RtD=02, I4=03, InputDisable=03, R=03!, Remanence=03!, Slvl=03, I5=04, Manual=04, Mro1=04!, TQ=04, TimeHigh=04, I6=05, Mode=05, Mro2=05!, TimeWarn=05, I7=06, OPf=06!, OutputAPI=06!, PulseTime=06, Qon=06!, I8=07, OMr1=07!, Qoff=07!, WarnTime=07, ORd1=08!, ORld1=09!, AQm=0a, ORw1=0a!, AQmt=0b, ORlw1=0b!, ORm1=0c!, ORlm1=0d!, ORy1=0e!, ORly1=0f!, OMr2=10!, ORd2=11!, ORld2=12!, ORw2=13!, ORlw2=14, ORm2=15!, ORwl2=15, ORlm2=16!, ORy2=17!, ORly2=18!, OSlvl=1a, A=ff, AQ1=ff, AQ10=ff, AQ11=ff, AQ12=ff, AQ13=ff, AQ14=ff, AQ15=ff, AQ16=ff, AQ17=ff, AQ18=ff, AQ19=ff, AQ2=ff, AQ20=ff, AQ3=ff, AQ4=ff, AQ5=ff, AQ6=ff, AQ7=ff, AQ8=ff, AQ9=ff, Alarm=ff, AlarmBrightness=ff, AlarmClock=ff, AlarmClockPeriod=ff, AlarmPeriod=ff, Brightness=ff, BrightnessLimit=ff, DayMaxTemp=ff, DayMinTemp=ff, Disable=ff, EnMove=ff, FadingTime=ff, I=ff, Input3=ff, Input4=ff, InputSel=ff, InputTrigger 1=ff, InputTrigger 2=ff, InputTrigger 3=ff, InputTrigger 4=ff, InputTrigger 5=ff, InputTrigger 6=ff, InputTrigger 7=ff, InputTrigger 8=ff, InputTriggerDown=ff, InputTriggerM=ff, InputTriggerP=ff, InputTriggerUp=ff, MasterBr=ff, Max=ff, MaxP=ff, Min=ff, Move=ff, MoveIgnore=ff, MoveOn=ff, MoveScene=ff, MoveTimeout=ff, NoLast=ff, OutputReset=ff, OutputResetAll=ff, Presence=ff, Q1=ff, Q2=ff, Q3=ff, Q4=ff, Q5=ff, Q6=ff, Q7=ff, Q8=ff, Qd=ff, RGBalt=ff, Scene=ff, SceneMixTime=ff, Sel1=ff, Sel2=ff, Sel3=ff, Sel4=ff, Sel5=ff, Sel6=ff, Sel7=ff, Sel8=ff, Select=ff, Step=ff, Steptime=ff, Time=ff, TrTime=ff, Trigger=ff, V1=ff, V2=ff, V3=ff, V4=ff, Wrap=ff, run=ff - **Time**: Q=ff - **TimeCaption**: Q=ff - **VirtualHttpIn**: Q=00 - **VirtualHttpInCmd**: AQ=00, Q=01 - **VirtualIn**: Q=00, Qm=01 - **VirtualInCaption**: Q=ff, Qm=ff - **VirtualOut**: I=00 - **VirtualOutCaption**: I=ff - **VirtualOutCmd**: I=00 - **VirtualUdpIn**: AQ=00, Q=01 - **VirtualUdpInCmd**: AQ=00, Q=01 - **VoltageIn**: AQ=ff, Q=ff - **VoltageOut**: I=ff - **WeatherCaption**: Q=ff - **WeatherData**: AQ=00 - **WeatherServer**: AQ=ff - **Week**: Q=00 - **WindowsMonitor**: AQc=ff, AQl=ff, AQo=ff, AQof=ff, AQt=ff, AQu=ff, HI1=ff, HI2=ff, HI3=ff, OutputAPI=ff, Remanence=ff, TQ=ff, TQo=ff, W=ff, Wh=ff, Wl=ff, Wt=ff - **Year**: Q=ffZuletzt geändert von LoxMunich; vor 2 Tagen.Kommentar
-
Ich baue gerade mit ChatGPT und Codex ein EMS. Wirklich beeindruckend, was mittlerweile alles so möglich ist.
Ob es am Ende etwas wird, kann ich noch nicht sagen. Wir hangeln uns von Sprint zu Sprint und von Epic zu Epic.
Aber Codex kann die lox Datei lesen und Änderungen vornehmen...Kommentar
-
Denke unbedingt drann, dass du vor dem Verbinden mit dem Miniserver einmal ein Objekt aus der geladenen Datei etwas verschiebst und dann erst dich verbindest. Sonst hast du folgendes Problem, ohne das sofort zu merken: https://www.loxforum.com/forum/germa...r%C3%BCckfrage
-
-
Ist schon interessant was alles geht:
Müllkalender — Plugin-Frage: Du hast recht, die gängigen Abfall-Plugins decken München/AWM nicht ab. Deshalb gehen wir ohne Plugin: Ich habe dir muell.php geschrieben — ein kleines Skript, das auf dem LoxBerry läuft, täglich deinen AWM-ICS-Kalender holt (mit Cache, falls AWM mal nicht erreichbar ist) und auf Abruf eine einfache Zeile liefert: MUELL;REST=1;BIO=0;PAPIER=0;… (1 = morgen wird abgeholt). Kein Cron, kein MQTT nötig — der Miniserver pollt das Skript einfach per virtuellem HTTP-Eingang, genau wie er es schon mit dem GW3000 macht. Installation: LoxBerry-Weboberfläche → Dateimanager → die Datei nach /opt/loxberry/webfrontend/html/ hochladen. Danach kurz http://192.168.178.14/muell.php im Browser aufrufen — wenn da die MUELL-Zeile erscheint, sag Bescheid, dann baue ich die Loxone-Seite dazu (HTTP-Eingang + drei Tonnen-Kacheln + Vorabend-Push um 19 Uhr).Angehängte DateienZuletzt geändert von LoxMunich; vor 2 Tagen.Kommentar
-
Update: Es hat 3 Runden gedauert, bis es jetzt perfekt lief. Fable 5 hatte zunächst angenommen, dass die Termine einzeln in der .ical drin stehen. Es war aber ein Serientermin. Insofern: Nicht perfekt beim ersten Mal, aber mit Nachsteuern und Rückmeldung der Fehler jetzt ein super Ergebnis das ich alleine und ohne KI nie hinbekommen hätte.
Was ich z. B. auch immer haben wollte: Eine Übersicht, welcher Taster mit 1x, 2x, 3x Klicks was auslöst (hatte der Elektriker nie übergeben). Jetzt durch die KI habe ich ein sauberes PDF in der Hand, in dem alles genau aufgelistet ist.
-
-
Ich muss sagen, dass ich irre begeistert bin. Endlich bekomme ich Funktionen, von denen ich immer nur geträumt habe (ja, hätte man beauftragen können oder tagelang selbst sich einlesen müssen und hätte es dann als Laie doch nicht hinbekommen.
Nachdem ich heute Shellys installiert habe in den Steckdosen, bekomme ich jetzt per TTS die Ansage: "Trockner ist fertig", "Waschmaschine ist fertig", gleichzeitig wird auch der Gefrierschrank überwacht falls ein Ausfall ist.
Während Claude gerade ein Morgen-Briefing und die Müll-Ansage um 20 Uhr des Vorabends per TTS implementiert, steht auch schon das nächste Projekt an: Abfahrtszeitenhinweis
Zum Abfahrts-Assistenten (Kalender + Verkehrslage): Ja, das geht — und es passt gut zu deiner LoxBerry-Architektur (gleiche Bauart wie der Müllkalender):- Google Kalender: Über die private ICS-Adresse deines Kalenders (Google-Kalender-Einstellungen → „Privatadresse im iCal-Format") — kein OAuth nötig. Ein PHP-Script auf dem LoxBerry liest den nächsten Termin mit Ortsangabe.
- Verkehrslage: Das Script fragt die Google Routes API mit deiner Heimatadresse und dem Termin-Ort ab → aktuelle Fahrzeit inkl. Stau. (Braucht einen Google-Maps-API-Key mit hinterlegter Zahlungsmethode — das Freikontingent reicht für diesen Zweck locker. Alternativ ginge HERE oder TomTom komplett kostenlos.)
- Rechnung: Abfahrtszeit = Terminbeginn − Fahrzeit − Puffer. Der Miniserver pollt das Ergebnis, und bei „noch 5 Minuten" kommt Push plus TTS-Ansage — sogar mit dynamischem Text („Du musst in 5 Minuten zum Zahnarzt losfahren"), das kann ich über einen virtuellen Texteingang lösen.
Was ich dafür von dir bräuchte: den privaten ICS-Link des Kalenders, die Entscheidung Google-API-Key vs. TomTom/HERE (kostenlos), und wie der Puffer sein soll (z. B. 5 min Ankunftsreserve + 5 min Vorwarnung).
Alles gebaut — 20260715_0308 mit neuer Seite „Zentral Assistenten 5" (validiert, nichts verloren):
Die fünf Funktionen:
Müll-Ansage (2): Um 19 Uhr zusätzlich zum Push die Durchsage „Morgen wird die Restmülltonne abgeholt. Bitte rausstellen." in Esszimmer/Küche/Wohnzimmer.
Morgen-Briefing (3): Werktags 6:50 in Küche und beiden Bädern: „Guten Morgen! Draußen sind es X Grad, heute werden bis zu Y Grad erwartet" + Regen-Hinweis, live aus Ecowitt und W4L.
3D-Drucker (4): Fertig-Push, wenn nach Betrieb (>40 W) die Leistung 10 Minuten unter 20 W liegt. Bewusst ohne Ansage — Drucke enden gern nachts.
Lüftungs-Wächter (5): 30 Minuten ohne Leistungsaufnahme → Warn-Push. Heizstab bleibt wie besprochen ohne Logik.
Negativpreis-Alarm (6): Spotpreis unter 0 → Push (max. 1×/Stunde) + tagsüber Ansage in Küche/Wohnzimmer. Ein Punkt zum Verifizieren: Ich nutze den SpotOpt-Ausgang „Uc" als aktuellen Stundenpreis — bitte nach dem Upload einmal in der LiveView gegenchecken (steht als ToDo #9).
Abfahrts-Assistent — komplett vorbereitet mit TomTom (bester Stau-Datenlieferant in Deutschland, kostenloser Key mit 2.500 Abfragen/Tag):
termin.php liegt im Ordner: liest deinen Google-Kalender (nächster Termin mit Ortsangabe in den nächsten 15 h), geocodiert den Ort, holt die Live-Fahrzeit ab Teststraße 1 und liefert alles an den Miniserver (3-Minuten-Poll).
In Loxone: App-Regler „Ankunftsreserve" und „Vorwarnung" (je 0–30 min, Standard 5/5), Kachel „Abfahrts-Assistent" („Nächster Termin: Abfahrt in X Min, Fahrzeit Y Min") und zur Warnzeit Push + Durchsage im EG.
Von dir fehlen noch 2 Einträge in termin.php (ToDo #8): der private iCal-Link deines Kalenders (im Ordner ist keiner angekommen — Google Kalender → Einstellungen → „Privatadresse im iCal-Format") und der TomTom-Key. Dann die Datei nach /opt/loxberry/webfrontend/html/ kopieren und mit ?debug=1 testen.
Eine ehrliche Einschränkung: Wiederkehrende Serientermine expandiert das Script (noch) nicht — es greifen Einzeltermine mit Ortsangabe. Falls deine wichtigen Termine Serien sind, baue ich die Expansion nach (gleiche Technik wie beim Müllkalender).
Denkprozess Trage beides ein und teste vorab die komplette Kette (Kalender + TomTom):Claude in Chrome verwendet (4 Aktionen), 2 Dateien bearbeitet, web durchsucht Claude in Chrome verwendet (4 Aktionen), 2 Dateien bearbeitet, web durchsucht Beides ist in termin.php eingetragen. Stand der Tests:
TomTom-Key ✓ — live getestet: Route vom Auwiesenweg nach München-Zentrum kam korrekt zurück (10,7 km, ~16 Minuten, Verkehrslage aktiv). Der Schlüssel ist gültig und das URL-Format stimmt.
Kalender-Link ✗ (noch) — die Adresse liefert aktuell einen 404. Das ist der public-Link, der nur funktioniert, wenn der Kalender „Termine Beruf" öffentlich freigegeben ist. Zwei Möglichkeiten:
Öffentlich machen: Google Kalender → Einstellungen → „Termine Beruf" → Zugriffsberechtigungen → „Öffentlich freigeben" ankreuzen. Dann funktioniert der eingetragene Link sofort. (Bedenke: Jeder mit dem Link kann die Termine sehen.)
Oder diskreter: In denselben Einstellungen ganz unten die „Geheime Adresse im iCal-Format" kopieren (enthält /private-…/basic.ics) und mir geben — dann tausche ich die Zeile aus. Kalender bleibt privat.
Danach nur noch: termin.php nach /opt/loxberry/webfrontend/html/ auf den LoxBerry kopieren (wie damals muell.php) und im Browser http://192.168.178.14/termin.php?debug=1 aufrufen — die Debug-Ausgabe zeigt dann Termin, Ort, Beginn und Fahrzeit. Sobald das läuft und die 0308 hochgeladen ist, meldet sich das Haus rechtzeitig vor der Abfahrt.
C:\Users\Name\Desktop\Loxone für Claude\termin.phpCode https://calendar.google.com/calendar...XXX/basic.ics2 Dateien bearbeitet, claude in Chrome verwendet (2 Aktionen), datei lesen2 Dateien bearbeitet, claude in Chrome verwendet (2 Aktionen), datei lesenFertig — der private iCal-Link ist eingetragen und verifiziert (die public-Variante gab einen 404, die private liefert die Kalenderdatei aus). Zusammen mit dem getesteten TomTom-Key ist termin.php jetzt einsatzbereit.
Die letzten drei Handgriffe liegen bei dir:
termin.php aus dem Claude-Ordner nach /opt/loxberry/webfrontend/html/ kopieren (gleicher Weg wie damals bei muell.php)
Test: http://192.168.178.14/termin.php?debug=1 — du solltest Termin, Ort, Beginn und aktuelle Fahrzeit sehen (oder „kein Termin mit Ort in 15h", falls gerade nichts ansteht)
Die 20260715_0308 hochladen — damit gehen gleichzeitig live: Abfahrts-Assistent (Kachel + Regler im Raum Zentral), Müll-Ansage 19 Uhr, Morgen-Briefing werktags 6:50, 3D-Drucker-Push, Lüftungs-Wächter und Negativpreis-Alarm
Zwei Praxis-Hinweise zum Kalender: Termine brauchen eine Ortsangabe (das Feld „Ort" in Google Kalender), sonst ignoriert der Assistent sie bewusst — und Serientermine expandiert das Script noch nicht. Wenn sich der Beruf-Kalender bewährt, erweitere ich gern auf mehrere Kalender (z. B. deinen privaten dazu) — das ist nur eine Zeile mehr im Script.Zuletzt geändert von LoxMunich; vor 19 Stunden.Kommentar
Kommentar