ChatGPT in openHAB: Ein technischer Leitfaden

Bist du bereit, dein Smart Home auf die nĂ€chste Stufe zu heben? Stell dir vor, du hast einen virtuellen Assistenten, der deine Sprachbefehle versteht, deine Lichter steuert, die Raumtemperatur anpasst und sogar deine Fragen beantwortet – alles nahtlos in dein openHAB Smart Home-System integriert. 🌟🏡

In diesem Blog-Beitrag werden wir erkunden, wie du ChatGPT, ein leistungsstarkes Sprachmodell, mit openHAB – einer Open-Source-Plattform fĂŒr Hausautomatisierung – verknĂŒpfen kannst. Egal, ob du ein erfahrener openHAB-Nutzer bist oder gerade erst anfĂ€ngst, du wirst neue Möglichkeiten entdecken, dein Zuhause zu automatisieren und deinen Alltag zu verbessern. Lass uns eintauchen!

FĂŒr diesen Beitrag habe ich ein Beispiel aus der Dokumentation verwendet. Ich bin jetzt dabei AnwendungsfĂ€lle zu finden und diese zu integrieren. Die Details zum Binding findet ihr hier. Im Forum gab es hier auch noch ein paar ergĂ€nzende Hinweise.

OpenAI Account

Im ersten Schritt muss ein kostenpflichtiger Account bei OpenAI erstellt werden. Die Integration der API funktioniert nicht mit dem Free Account. Nach der Anmeldung kann man wie folgt Guthaben aufladen und das Abo wieder beenden:

Installation

Die Installation drfolgt wie gewohnt ĂŒber die Web-OberflĂ€che:

  • Add-on Store – Binding – ChatGPT Binding – INSTALL

Danach muss ein API-Key fĂŒr ChatGPT generiert werden

Thing

Eine mögliche ChatGPT.things kann wie folgt aussehen:

Thing chatgpt:account:1 [apiKey="xxx"] {
    Channels:
        Type chat : chat "Weather Advice" [
            model="gpt-3.5-turbo",
            temperature="1.5",
            systemMessage="Answer briefly, in 2-3 sentences max. Behave like Eddie Murphy and give an advice for the day based on the following weather data:"
        ]
        Type chat : morningMessage "Morning Message" [
            model="gpt-3.5-turbo",
            temperature="0.5",
            systemMessage="You are Marvin, a very depressed robot. You wish a good morning and tell the current time."
        ]
}

Items

Die ChatGPT.items kann entsprechend aus der Dokumentation ĂŒbernommen werden:

String Weather_Announcement { channel="chatgpt:account:1:chat" }
String Morning_Message      { channel="chatgpt:account:1:morningMessage" }

Number Temperature_Forecast_Low
Number Temperature_Forecast_High

Rules

Nun kann man in der Regeldatei ChatGPT.rules seine entsprechenden Regeln parametrieren:

rule "Weather forecast update"
when
  Item Temperature_Forecast_High changed
then
    Weather_Announcement.sendCommand("High: " + Temperature_Forecast_High.state + "°C, Low: " + Temperature_Forecast_Low.state + "°C")
end

rule "Good morning"
when
  Time cron "0 0 7 * * *"
then
    Morning_Message.sendCommand("Current time is 7am")
end

Ergebnis

Das Ergebnis sieht in der events.log wie folgt aus:

2024-04-29 20:56:01.004 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'Morning_Message' received command Current time is 7am
2024-04-29 21:07:02.424 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Morning_Message' changed from NULL to Good morning. It is currently 7am.

In der openhab.log wird auch ein Teil protokolliert:

2024-04-29 20:55:29.188 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'ChatGPT.rules'
2024-04-29 20:56:01.006 [INFO ] [org.openhab.core.model.script.INFO  ] - ChatGPT.rules - Current time is 7am
2024-04-29 20:56:01.282 [ERROR] [ding.chatgpt.internal.ChatGPTHandler] - ChatGPT request resulted in HTTP 429 with message: Too Many Requests
2024-04-29 21:06:11.314 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'ChatGPT.rules'
2024-04-29 21:07:01.238 [INFO ] [org.openhab.core.model.script.INFO  ] - ChatGPT.rules - Current time is 7am
2024-04-29 21:17:00.537 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'Morning_Message' received command Current time is 7am
2024-04-29 21:17:00.541 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Temperature_Forecast_Low' changed from NULL to 7
2024-04-29 21:17:00.542 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Temperature_Forecast_High' changed from NULL to 15
2024-04-29 21:17:00.547 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'Weather_Announcement' received command High: 15°C, Low: 7°C
2024-04-29 21:17:01.524 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Morning_Message' changed from Good morning. It is currently 7am. Another day to exist in this meaningless existence. to Good morning. It is currently 7am. Another day to exist in this meaningless universe.
2024-04-29 21:17:03.627 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Weather_Announcement' changed from "Hey folks, it's waking up time! Grab yourself a strong cup of coffee and get your day off to a great start. Sow some positive vibes so you can reap a beautiful day ahead. And remember, go out there and slay like a sunbeam–be bright, shine and spread some warmth!" to "Hey there! Today's weather is sounding like a smooth jazz song so play some calming tunes, grab a cozy sweater, and sip on a hot beverage. Embrace the brisk air, take a deep breath, and have a breezy day."

In meinem Fall wird dann auch auf einem Alexa-EndgerÀt eine Sprachausgabe entsprechend ausgegeben.

Fazit

Die technische Integration von ChatGPT in openHAB ist mit den aktuellen Versionen ziemlich einfach möglich. Ein einfaches Beispielszenario ist schnell eingerichtet. 

Weitere Szenarien fĂŒr den produktiven Betrieb in unserem SmartHome habe ich noch nicht weiter evaluiert. Zu Szenarien im SmartHome in Kombination mit kĂŒnstlicher Intelligenz werde ich noch einen eigenstĂ€ndigen Beitrag erstellen.

Nutzt Ihr ChatGPT in openHAB? Welche Szenarien und AnwendungsfÀlle fallen euch ein?

0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darĂŒber, wie deine Kommentardaten verarbeitet werden.