From 329f2b71e8cc6a078d8c09b8172e84ad5ce8fe6c Mon Sep 17 00:00:00 2001 From: stefan-hoehn Date: Sun, 17 Dec 2023 13:38:31 +0100 Subject: [PATCH] [govee] New Govee LAN-API Binding (#15696) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stefan Höhn --- CODEOWNERS | 1 + bom/openhab-addons/pom.xml | 5 + bundles/org.openhab.binding.govee/NOTICE | 13 + bundles/org.openhab.binding.govee/README.md | 170 +++++++++ .../doc/channel-setup1.png | Bin 0 -> 45122 bytes .../doc/channel-setup2.png | Bin 0 -> 24210 bytes .../doc/channel-setup3.png | Bin 0 -> 28815 bytes .../doc/device-settings.png | Bin 0 -> 25659 bytes .../doc/govee-lights.png | Bin 0 -> 106541 bytes .../doc/ui-example.png | Bin 0 -> 30658 bytes bundles/org.openhab.binding.govee/pom.xml | 17 + .../src/main/feature/feature.xml | 9 + .../govee/internal/CommunicationManager.java | 258 ++++++++++++++ .../govee/internal/GoveeBindingConstants.java | 47 +++ .../govee/internal/GoveeConfiguration.java | 27 ++ .../govee/internal/GoveeDiscoveryService.java | 198 +++++++++++ .../binding/govee/internal/GoveeHandler.java | 329 ++++++++++++++++++ .../govee/internal/GoveeHandlerFactory.java | 63 ++++ .../binding/govee/internal/model/Color.java | 25 ++ .../govee/internal/model/ColorData.java | 28 ++ .../govee/internal/model/DiscoveryData.java | 37 ++ .../govee/internal/model/DiscoveryMsg.java | 31 ++ .../internal/model/DiscoveryResponse.java | 30 ++ .../model/EmptyValueQueryStatusData.java | 26 ++ .../internal/model/GenericGoveeData.java | 27 ++ .../govee/internal/model/GenericGoveeMsg.java | 30 ++ .../internal/model/GenericGoveeRequest.java | 27 ++ .../govee/internal/model/StatusData.java | 26 ++ .../govee/internal/model/StatusMsg.java | 25 ++ .../govee/internal/model/StatusResponse.java | 24 ++ .../govee/internal/model/ValueIntData.java | 28 ++ .../govee/internal/model/ValueStringData.java | 28 ++ .../src/main/resources/OH-INF/addon/addon.xml | 10 + .../main/resources/OH-INF/config/config.xml | 24 ++ .../resources/OH-INF/i18n/govee.properties | 80 +++++ .../resources/OH-INF/thing/thing-types.xml | 32 ++ .../govee/internal/GoveeDiscoveryTest.java | 64 ++++ .../govee/internal/GoveeSerializeTest.java | 57 +++ bundles/pom.xml | 1 + 39 files changed, 1797 insertions(+) create mode 100644 bundles/org.openhab.binding.govee/NOTICE create mode 100644 bundles/org.openhab.binding.govee/README.md create mode 100644 bundles/org.openhab.binding.govee/doc/channel-setup1.png create mode 100644 bundles/org.openhab.binding.govee/doc/channel-setup2.png create mode 100644 bundles/org.openhab.binding.govee/doc/channel-setup3.png create mode 100644 bundles/org.openhab.binding.govee/doc/device-settings.png create mode 100644 bundles/org.openhab.binding.govee/doc/govee-lights.png create mode 100644 bundles/org.openhab.binding.govee/doc/ui-example.png create mode 100644 bundles/org.openhab.binding.govee/pom.xml create mode 100644 bundles/org.openhab.binding.govee/src/main/feature/feature.xml create mode 100644 bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/CommunicationManager.java create mode 100644 bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/GoveeBindingConstants.java create mode 100644 bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/GoveeConfiguration.java create mode 100644 bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/GoveeDiscoveryService.java create mode 100644 bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/GoveeHandler.java create mode 100644 bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/GoveeHandlerFactory.java create mode 100644 bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/Color.java create mode 100644 bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/ColorData.java create mode 100644 bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/DiscoveryData.java create mode 100644 bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/DiscoveryMsg.java create mode 100644 bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/DiscoveryResponse.java create mode 100644 bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/EmptyValueQueryStatusData.java create mode 100644 bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/GenericGoveeData.java create mode 100644 bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/GenericGoveeMsg.java create mode 100644 bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/GenericGoveeRequest.java create mode 100644 bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/StatusData.java create mode 100644 bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/StatusMsg.java create mode 100644 bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/StatusResponse.java create mode 100644 bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/ValueIntData.java create mode 100644 bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/ValueStringData.java create mode 100644 bundles/org.openhab.binding.govee/src/main/resources/OH-INF/addon/addon.xml create mode 100644 bundles/org.openhab.binding.govee/src/main/resources/OH-INF/config/config.xml create mode 100644 bundles/org.openhab.binding.govee/src/main/resources/OH-INF/i18n/govee.properties create mode 100644 bundles/org.openhab.binding.govee/src/main/resources/OH-INF/thing/thing-types.xml create mode 100644 bundles/org.openhab.binding.govee/src/test/java/org/openhab/binding/govee/internal/GoveeDiscoveryTest.java create mode 100644 bundles/org.openhab.binding.govee/src/test/java/org/openhab/binding/govee/internal/GoveeSerializeTest.java diff --git a/CODEOWNERS b/CODEOWNERS index 5d1a045d195..59a56ddd9f1 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -123,6 +123,7 @@ /bundles/org.openhab.binding.generacmobilelink/ @digitaldan /bundles/org.openhab.binding.globalcache/ @mhilbush /bundles/org.openhab.binding.goecharger/ @SamuelBrucksch +/bundles/org.openhab.binding.govee/ @stefan-hoehn /bundles/org.openhab.binding.gpio/ @nils-bauer /bundles/org.openhab.binding.gpstracker/ @gbicskei /bundles/org.openhab.binding.gree/ @markus7017 diff --git a/bom/openhab-addons/pom.xml b/bom/openhab-addons/pom.xml index 5c9c312d921..71e415113a7 100644 --- a/bom/openhab-addons/pom.xml +++ b/bom/openhab-addons/pom.xml @@ -606,6 +606,11 @@ org.openhab.binding.goecharger ${project.version} + + org.openhab.addons.bundles + org.openhab.binding.govee + ${project.version} + org.openhab.addons.bundles org.openhab.binding.gpio diff --git a/bundles/org.openhab.binding.govee/NOTICE b/bundles/org.openhab.binding.govee/NOTICE new file mode 100644 index 00000000000..38d625e3492 --- /dev/null +++ b/bundles/org.openhab.binding.govee/NOTICE @@ -0,0 +1,13 @@ +This content is produced and maintained by the openHAB project. + +* Project home: https://www.openhab.org + +== Declared Project Licenses + +This program and the accompanying materials are made available under the terms +of the Eclipse Public License 2.0 which is available at +https://www.eclipse.org/legal/epl-2.0/. + +== Source Code + +https://github.com/openhab/openhab-addons diff --git a/bundles/org.openhab.binding.govee/README.md b/bundles/org.openhab.binding.govee/README.md new file mode 100644 index 00000000000..fca210a9b2c --- /dev/null +++ b/bundles/org.openhab.binding.govee/README.md @@ -0,0 +1,170 @@ +# Govee Lan-API Binding + +![govee](doc/govee-lights.png) + +This binding integrates Light devices from [Govee](https://www.govee.com/). +Even though these devices are widely used, they are usually only accessable via the Cloud. +Another option is using Bluetooth which, due to its limitation only allows to control devices within a small range. +The Bluetooth approach is supported by the openHAB Govee Binding while this binding covers the LAN interface. + +Fortunately, there is a [LAN API](https://app-h5.govee.com/user-manual/wlan-guide) that allows to control the devices within your own network without accessing the Cloud. +Note, though, that is somehow limited to a number of devices listed in the aforementioned manual. +The binding is aware of all the devices that are listed in that document and even provides a product description during discovery. + +Note: By intent the Cloud API has not been implemented (so far) as it makes controlling Govee devices dependent by Govee service itself. + +## Supported Things + +The things that are supported are all lights. +While Govee provides probably more than a hundred different lights, only the following are supported officially by the LAN API, even though others might works as well. + +Here is a list of the supported devices (the ones marked with * have been tested by the author) + +- H619Z RGBIC Pro LED Strip Lights +- H6046 RGBIC TV Light Bars +- H6047 RGBIC Gaming Light Bars with Smart Controller +- H6061 Glide Hexa LED Panels (*) +- H6062 Glide Wall Light +- H6065 Glide RGBIC Y Lights +- H6066 Glide Hexa Pro LED Panel +- H6067 Glide Triangle Light Panels (*) +- H6072 RGBICWW Corner Floor Lamp +- H6076 RGBICW Smart Corner Floor Lamp (*) +- H6073 LED Floor Lamp +- H6078 Cylinder Floor Lamp +- H6087 RGBIC Smart Wall Sconces +- H6173 RGBIC Outdoor Strip Lights +- H619A RGBIC Strip Lights With Protective Coating 5M +- H619B RGBIC LED Strip Lights With Protective Coating +- H619C LED Strip Lights With Protective Coating +- H619D RGBIC PRO LED Strip Lights +- H619E RGBIC LED Strip Lights With Protective Coating +- H61A0 RGBIC Neon Rope Light 1M +- H61A1 RGBIC Neon Rope Light 2M +- H61A2 RGBIC Neon Rope Light 5M +- H61A3 RGBIC Neon Rope Light +- H61A5 Neon LED Strip Light 10 +- H61A8Neon Neon Rope Light 10 +- H618A RGBIC Basic LED Strip Lights 5M +- H618C RGBIC Basic LED Strip Lights 5M +- H6117 Dream Color LED Strip Light 10M +- H6159 RGB Light Strip (*) +- H615E LED Strip Lights 30M +- H6163 Dreamcolor LED Strip Light 5M +- H610A Glide Lively Wall Lights +- H610B Music Wall Lights +- H6172 Outdoor LED Strip 10m +- H61B2 RGBIC Neon TV Backlight +- H61E1 LED Strip Light M1 +- H7012 Warm White Outdoor String Lights +- H7013 Warm White Outdoor String Lights +- H7021 RGBIC Warm White Smart Outdoor String +- H7028 Lynx Dream LED-Bulb String +- H7041 LED Outdoor Bulb String Lights +- H7042 LED Outdoor Bulb String Lights +- H705A Permanent Outdoor Lights 30M +- H705B Permanent Outdoor Lights 15M +- H7050 Outdoor Ground Lights 11M +- H7051 Outdoor Ground Lights 15M +- H7055 Pathway Light +- H7060 LED Flood Lights (2-Pack) +- H7061 LED Flood Lights (4-Pack) +- H7062 LED Flood Lights (6-Pack) +- H7065 Outdoor Spot Lights +- H70C1 Govee Christmas String Lights 10m (*) +- H70C2 Govee Christmas String Lights 20m (*) +- H6051 Aura - Smart Table Lamp +- H6056 H6056 Flow Plus +- H6059 RGBWW Night Light for Kids +- H618F RGBIC LED Strip Lights +- H618E LED Strip Lights 22m +- H6168 TV LED Backlight + +## Discovery + +Discovery is done by scanning the devices in the Thing section. + +The devices _do not_ support the LAN API support out-of-the-box. +To be able to use the device with the LAN API, the following needs to be done (also see the "Preparations for LAN API Control" section in the [Goveee LAN API Manual](https://app-h5.govee.com/user-manual/wlan-guide)): + +- Start the Govee APP and add / discover the device (via Bluetooth) as described by the vendor manual + Go to the settings page of the device + ![govee device settings](doc/device-settings.png) +- Note that it may take several(!) minutes until this setting comes up. +- Switch on the LAN Control setting. +- Now the device can be used with openHAB. +- The easiest way is then to scan the devices via the SCAN button in the thing section of that binding + +## Thing Configuration + +Even though binding configuration is supported via a thing file it should be noted that the IP address is required and there is no easy way to find out the IP address of the device. +One possibility is to look for the MAC address in the Govee app and then looking the IP address up via: + +```shell +arp -a | grep "MAC_ADDRESS" +``` + +### `govee-light` Thing Configuration + +| Name | Type | Description | Default | Required | Advanced | +|-----------------|---------|---------------------------------------|---------|----------|----------| +| hostname | text | Hostname or IP address of the device | N/A | yes | no | +| macAddress | text | MAC address of the device | N/A | yes | no | +| deviceType | text | The product number of the device | N/A | yes | no | +| refreshInterval | integer | Interval the device is polled in sec. | 5 | no | yes | + +## Channels + +| Channel | Type | Description | Read/Write | Description | +|-----------------------|--------|---------------------------------|------------|----------------------| +| color | Switch | On / Off | RW | Power On / OFF | +| | Color | HSB (Hue Saturation Brightness) | RW | | +| | Dimmer | Brightness Percentage | RW | | +| color-temperature | Dimmer | Color Temperature Percentage | RW | | +| color-temperature-abs | Dimmer | Color Temperature Absolute | RW | in 2000-9000 Kelvin | + +Note: you may want to set Unit metadata to "K" when creating a color-temperature-abs item. + +## UI Example for one device + +![ui-example.png](doc/ui-example.png) + +Thing channel setup: + +![channel-setup1.png](doc/channel-setup1.png) +![channel-setup2.png](doc/channel-setup2.png) +![channel-setup3.png](doc/channel-setup3.png) + +```java +UID: govee:govee-light:33_5F_60_74_F4_08_77_21 +label: Govee H6159 RGB Light Strip H6159 (192.168.178.173) +thingTypeUID: govee:govee-light +configuration: + deviceType: H6159 + wifiSoftwareVersion: 1.02.11 + hostname: 192.168.162.233 + macAddress: 33:5F:60:74:F4:08:66:21 + wifiHardwareVersion: 1.00.10 + refreshInterval: 5 + productName: H6159 RGB Light Strip +channels: + - id: color + channelTypeUID: system:color + label: Color + description: Controls the color of the light + configuration: {} + - id: color-temperature + channelTypeUID: system:color-temperature + label: Color Temperature + description: Controls the color temperature of the light from 0 (cold) to 100 (warm) + configuration: {} + - id: color-temperature-abs + channelTypeUID: govee:color-temperature-abs + label: Absolute Color Temperature + description: Controls the color temperature of the light in Kelvin + configuration: {} +``` + +## Additional Information + +Please provide any feedback regarding unlisted devices that even though not mentioned herein do work. diff --git a/bundles/org.openhab.binding.govee/doc/channel-setup1.png b/bundles/org.openhab.binding.govee/doc/channel-setup1.png new file mode 100644 index 0000000000000000000000000000000000000000..de86255dac23bdc5bd9ab121114580ef83464b9c GIT binary patch literal 45122 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�FoM2^HeQ4R{_blf+4d``>|jQg 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 literal 0 HcmV?d00001 diff --git a/bundles/org.openhab.binding.govee/doc/channel-setup2.png b/bundles/org.openhab.binding.govee/doc/channel-setup2.png new file mode 100644 index 0000000000000000000000000000000000000000..ab770d5502946d4111793b38702168684cc6ea5b GIT binary patch literal 24210 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 literal 0 HcmV?d00001 diff --git a/bundles/org.openhab.binding.govee/doc/device-settings.png b/bundles/org.openhab.binding.govee/doc/device-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..053096ce0abc5f23d9c097bbc68454d0613c101f GIT binary patch literal 25659 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 X_~GNWd7K>p005w@pe|p9vIzYjRYCaD literal 0 HcmV?d00001 diff --git a/bundles/org.openhab.binding.govee/doc/govee-lights.png b/bundles/org.openhab.binding.govee/doc/govee-lights.png new file mode 100644 index 0000000000000000000000000000000000000000..1917086dd66b7cc0c9c6391afbe33f8869639a9c GIT binary patch literal 106541 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 literal 0 HcmV?d00001 diff --git a/bundles/org.openhab.binding.govee/doc/ui-example.png b/bundles/org.openhab.binding.govee/doc/ui-example.png new file mode 100644 index 0000000000000000000000000000000000000000..fd23c6b0b6be43ad25a9cb698c61c47c33b2e7f6 GIT binary patch literal 30658 zcmeFXbx@mK_xIc0724vZc!44fEgsyti#BM{LLpEH5Zr@nahD*$i%W5LO0nWj@D!II zMS=ywJH4NC-rsqi`TcXwoOk9uGiN4~*^{j6T6?d(_I0iO-JkFestSb9XrA4>caISC zURLAYy+}bf*wdyUY1lpS=MtQ ziECR}o-c75UBWK&xm_z~iq5cr68`P;mKZbO`|3Y_1TDW#o&I+_kcM3Xi1R<}HUa;? z*}p||vydotTC-5OdH~Lvr34l|FgSB&c2=-I%w~V5%%np= zKwzMzW+;VaH=TWtd8$waT@yieYKAMlc%P7{BYJMSE)ONg(D%}V5^8ceWz&n<(GtTc z4Veqz1eW09*k6y_wD$)}!SJ*sgs`K@^Rgh4T&jnaJ7z}K%&V5)rRnMj2DWj}cP%}K5xt7@kA-Ww*Qt&rzc!P$>ocHfFP2CE@4X}AB^@lU0$(>h!hg(It74MuhFvlB`@VkZH3klB>&g@(F@sS@RkIVyngqcO+lVi;u_K)qw;u{QabGX z6}HNN91z8168Gnd>fD!frV}ES%2tfBZ^z|x%e7*}bS+y+{ennxC4Pq-hYd|^Stff6ad2t}lpq~#?r=`Qh|D(C1{xhFK zdL!VEbNc^ip1t|+JpIeR=ZpW&)4%*nJp1oF{mVan@PFs&U;bmI{~42K9_V&}HG7WI z$UFX4_lf$upZOHIE;O{XwG1%YOKSUeOtMP0qy$!5{loyN@y~by4J|cdX#@rj+fG$m z&nA@)w$kkzE>M0_VgokEyG7XxpRCKx`suxF&cB(<$Gn_3nU@J67*I9AU@)!+^~eQL zbQy%btm=!;KHHrtJMz6~bv>IYMEQF0b~48ZGhwxV5DG1QR^qJJiZtV{8<%!na_q0y z6=YQ}Lyn3a*<}0SJWj5%ybe>nap|a=zEMf+{?=|ViIHXr0OND943)wi$LeR?-Ckpq z*i;Lod$+t$Si_UW9GOt_P73Lb_pj5Yr^P0Lcs^)-l%i;BUd{>y{}R%`c_bfFHhn#D zdx6U42t?ICsN$%pbjoj>kpFmh7v()t9O z(T1ZWPku7bS3=Y8a2K7Nv(^>OTQwqEh`cKaU}~E7X}To0#~pNb1&7gKN^v z|6x_<-R%(w`f&5Z8G&aK==O3wmNkj_ukUuP2gwGnR7H1Lu;-1P%X`wG0Qv8azQ8PE zWr!vCQ;GGI^yt0ztMj)LkK9l`7x~*sh7*q{4S23Nz{bDUGTVPu6Y;ZMWhlR9lyzjA z$oD-R5h9aGJ9WbzG&Tl2zyn0{i{=(1KC=|$^t+wyOn~zE2+6n1lJx-LknRvd>ti~! z(iTKehqtnhv?sXv?uV;c=tuX9Ww(PMGS#a44<56mwhrGxrLcM@)M$Az z&ad4u%B?mOfa*7EPf%urf-xW!6_v=b$?D`L5#t|06sV%NX3fKax`-@53?%t|p@|%4ma1G(A4it6Qw>xZc~i{j(T1XyAasPv`Clq$Bo3A{%k0Mm3zf zJ`eV#Bx7$=I~t%Dw$;2c3HU=_GjwQ@EHrBGbo6cOw;&*iothyorC}q8L_>+r)REM+ok)buj63H)t* z!krS!ADH=dx7C^nd@cX^^TGUWB4=f<$vao@tGy7vt0AKVk2-R%nrw1?!)u8l_Stil z(|Kt2{LSf@{YOI&Gn3?6`V7r3YG_7$-M8HyGKo+_h=%iDK<~$o;QsIsX(et7a@H@* zUFTzdIA@KLmcthGeoE(!nN#(WMP76QSp!vutie7{X0re*;ZTe`K|73dpp}e>V~9o5)|+q#qfw z4{{({SF0zgRhCU1YwM`Ps7v*WaMAYyG*ITi3Hd1AK#0Mr>KsJxjXW^!-9rI z_lolp5IwecH_4W|c!xHS9X=Xc{#U?8z3uFq4OS31RKH^?TE{LP?6H{yziiq_Py%FL z?S@eGJ*T_wQQcA*#;*;qEdc&#qtv&l-bgCTDr0;ltCsg%Wsm1bxN@rdtpgE6)rlzN zDoo_>hBxwrxg$O0S09G+w=y=Dz;?}>37*8&1XHZD>B6!GCSkINbFY#OoJRyy*grfZ zaM@BTG@^-0D;DBx`~3s7WlJC;-FlXNcLS~QAwbECMQ?t9(n@-}pNKWYV_p^BhiUSj z7q8!LOWlFi*ntTL(Vm9NjZ>;(uN^s(v7L9f+*d@kKBpr>Y9@kr+?4S;Ud=X`px za+Kg{+*y&70Bu!|>pACQxUo#@Y4diLQb@!5euvLKR~*lac}CsUmJbR_oc`X=$w(-mrF%`V z{_}X_W&2KUWI~M+fmP(s(k-ql{$cxAiSzdj0qd&G5iD|}7~95W!M6%M^d0LNMXK_P zae~lk$2a!Jw0i+JA@2RI8lkz8as*H2BnMfxUknwHh2K(>u+B*?RQ8x92Rx0^W%X6i zdriOMb<{p!U(8zLH?MlQ0m%kh-Rn-{;jUSHaOkkgm+(H|@&^{5yNxHjvCO&W^B!V2 z@-!hoRNub6-b2z-xQ`>h^57Qnp~qTG`5uVeKKn`grD}k?k>E z5(}H~i_dIwj=;~KRHIY`=UJL9e&0%B_ovnx??;RL^;c4ojlBfri!TJHL+6tpN;V!s zRt)k>?#Ze#NL*($8GO*QGc}nMd++~3x~_0i*(!>fEhD3Keo)LYI+ByzgpI`D?-CZx zfTABNkPs9pS(s)|GEa%+!(-aQ$Y-OSI85cn+7Px_*17-jQOOzEHWgCc4e~_Ymu)`3 zZ{sUa77{e-u=Y-Ca95YL@bk;y>UZ7#eMHeBG;}@mG%!*l9z2q0(G`V|kBI4|*FS7= z-t=zqz!y(ouaxcWz=f(ZGBK@7CVFKLs-yaJhQ<0C3%O*$5h1HM>=7#C_GhN!_v_#* z={^7KjVu`rd>Mm@dde7e#tH$Eqx|%;$B1|5^2v8X(mZ zhsQze97FVIxD!Dn6JePGcGc7W9PsE9;**}LP`bT$T3(X?2%zPm&yEJt9z{v4Kst=gYq>pQo2gUV>txpElAUcf zoc>e-0CsHYT%1JD3-4DZbadydcU4CssLS*ka)9e>e$0u|Fw=R@)sV+CV^PhNRfNf_ zF{>NL1&FfRRm4WFJB}oq?Bh;UQHN|Bq|AGedW#nYd9F#xWO$Ori|d!d0f9LlVJzt)FlH@+EWX?U!Sv zrS;Z#fsX}JjMnHKlWvuu_p%*h@LX1Y>#@KN+b>oIyiESWra5Q$_*;%_v%GdNtYHYF zHjXM{R1dHfKB${YVBz#t=zmciY#z=@0k0FBFGYl^Z0=k`qiPF&luB+`Qd5u zPs#B|m(S@#NRwuG%yb1Q)g<$H)gB2cTe0n)5s?)YbI7?qN@dmhI^epIJ0zEi(zFa0 zdsovK{ghEu?RENem?(*!^^Hn5Yt1N63DEg6M)ZT$>=k`?z+-}JN1?}^y-Q(>0=w_G zYkAy$H*f%84m4x8uyM4!=%j2 zJ9e2auPm-h;mpKaV&Ty1=}>klftnH~%VpKH1PH*Acr2PVO>|@xMClIi+rE{=XXYj# zSuibwn93yFKASENqeC#2`4L#ZTMj!nTKcp?(W`8g+zUmp1EYHNpqVpmhL%&T1fYZm z?rLAiDRZp^?4SKck! zV}b7m&=#-5W>$|e#7bL#6h05^GRpFS=<(%#RX35+io*V;UHVVoBFS(^S*Xdh)Ib7M zG{&d;c0|;K&9Q6;!O~4n7JWs!GtvkeO8>{Vhsp9$g72Kei)0sRLR)ZrL@iq z1@=}yX)2UsdJ;lY>Hct6*=+9!abh60-XfcxwL7q6st1&11qjH_<4e7&fEY*_fA_yX z(*HcS41W8}K&1dGqzX#;;)9Fj;bcUr;@|YqAKpO@k1TT zYGiJjvR(lmE&#k7_!{24Vcg0AW*1zojSY&z{ zd9k~lRONRWbxF_j<6gF$#+xmvBj7URiLx?u*skIM(DVLj(Lv-@R`mV-yC$W$Q3e8s z!qtoo1AyHJsHt9=TaS|Z{22{AO<^lTsr4S!0U1_Ysgr^z8CfqJ67Z zncZ&p7uJMY#6Y-2c;a4UnZN%t{Pu4*f}UCHUnr>We}76LalYx@Qcuzzt;ko>><$P2 zXjba`RTgGw%XWP~nnW^kvG+$lKvixtpe)%xhR1|%?F)T$x=m3ENp71~4M=7E;Z(3F zQKPyBWv;rc83UgvZ`_m&G+)K4fsWJ#I)u|qW-dLjuqQNhkONv{tu6zv;p!PSe z`k=;CG4cIb?HBifBc4oPcy554IWbV6=KL~B_kCN8=W{~YVG_~ZTzUm&Kut6cvjs;r zXJ)z4vv{E-bB!r;#>Wm7j-fkcVPf=a4K86#a(#3`py>JcViBFdmp{Y-F>$Md+dU~^ zO2^pqH|82f4qcB1pr$~Dw(wRfppC9z=3NhO@>AgO-=6!wcwkNNpv#E+;k%#^Jm~iAiB=LL$^)p_V_oJ zr+JaLB##g8lw+1X>O)v{! z8)WPOr$Eu@_qtJ+Jy#!}^(tFMK_!`0Kd|O5sTW>y?CGd8M8vf0yi$a|4po0yXng}% z?%RkFm0Z6GAKogCtX^^t`P)V{Q%?L8k1||rP`2WYd}7dRmj|U?Tcd2mdz8U)_I+af*{K1bo}^Z- zAa$BV4G~lJ)!$v_5%~jA8gbRJzK*>N8e(pq>I-Q5=7QgaF-Jk8fg1Mu3u-VB3rN|TH+OyPX zV-3pIe*t{t9APHE$Q?5JKK(n;`)Rjr5GeYobf4MZ z-sUvJ)9!Pej_j=lyd3j7%2vF#Q!?+LKLFP7xKj%y`%uaJ^;`c5JPr12jW0y(2~#(} zwMLQH8weFXfy+4qYNGEo?&L#_N#hutqsu-bTnzk5*~)HAO$v`~Z(`aj;HviJAgSJn zw}QS{4d+x3EZm1CU&Sf}^8NcW<~Sd`qUU*+!*t-8OXY&Oc{Qq2qjr)DBOHiN%BRo_Gje$9R@Nb3{9njR6f{#ncXXr zAy_hy7z0Jf6#^Y!J*T5?5Ky*Ch*8Wzfau(grsBs$$btUO_{^!hKOAC=h1cu?>Yl!o z8S5dTI!-@}6GTjT%j-CrIzX=boYph8xCoxWMQ?w-8zmDp6aHAdU46Gslt9HQs=Vjo zC7^6I+Wm^RuNDAnsfFiA|6U3!C}Uo`bTE7lt?fQEXAD^@0p>q-yLB+wCHeI-Uz`k& zUmmvkr?CHQ!2e9N(P}(Wwu-4+)GqW_?nt)6ZFy(x)3 zdBpaqw`$^L^WlGUuek&k$@Fmr%&_igqckj@KEyPUuAGmnmmoh z=Y>Y3PWQa@rKNU@Dj9UocdehN$X&rci;EVO_bpO)z99aBX=pPzqV^n9LVp#fi2D5TvMearx( zS@DsSX{1BaVyRW?<_LwKewL^waJzuLfrwi@Bn ze-__GXgu6sb7dO^rUM87<1ScigHve%)aHEhLj6+8lVzYx-%FPMh;x3oXZ?;CDl;!&ukpvFPw&M3HB&K1_^y+Trm&D0rZmcJ?=j_;M zjv)?5A%0s7&zMJa%oxuBPYVK122rJwC~yw*bjM4O+WGLbTT%i5BSCi6J*6Lx0cCdZ zF{XE={Ym8Y^`5}%rdof5v`2KA@u28YcU<3aVMaA!b#^m8{*U}EcZhGoYh~(i=YSgO zbu~V_8*9b79$C{38Iz6 z$c)&OcX>*tAX5E2(&`_ThL7d9oy}^tj_E;~JV`)Kxnt;)IN+Q(<@#AoD%6vTg#NFt?cGH!1ozaj zM~ep2ztqj)z~N`3MzUsURNW{o8YX;_JOKTVcTr)XiRu%t9y_hZE=qPUh2uRT4Ky*3 zIV1?T*>`_GRF=iX8MGswWTDY-o5%mq!o8;{%UfP1*lc`fTLM*-0$L9m3m5TL?RzQ@ z#IQ;hky16jQUJh~mgDW-$eAmPcV&vw9Y>E@n2z&&UFpU0q~2TiALEG+5T@P|-BOwk zx1b`0SeEt5&{$gZWxf?ZiLMCx-K4-p?W5Eg5uIR7KVt2#;dM9?5TQk{P&^% zMYWo{x#oG-vLzEdL3PZ=)tbO-0GD@Te9ahzo&yBs4B>Lx>E#8Fr3Ud1_Rr$9??0xX zyMF`N8|4tHAT|CDJfiXqIkHfS1FEocAt_?yO!YMz82jGF;%(oz#knI`Gb?wEjGKaf3v>IcC@RxTPJFAf92ZqW1mOJg`-9-te^}kUMHBPH%U>QJvl`h zJI6KZu`rmJZoo0QKn)^Rz84Ew;C`#D`4^lZY(;G4d z?a=%YPTzH3jmg+G6}&VSA0LnC6DM>ZHs|e{Yy>^OyUakyEQjlM3nny6Q@pH>-2Zz| z3V6<*D#8(~-0a`?BwLR8B~P&~G0l!?v9T5@vMG>b&&#ytSd2y`{+@r%=rsw0rGIrs zU5>o;{b(9xCljW5A)wTro!g2BGyy!22|$qU>g)U|Q%XUEb@4orKvm#<3nQ~d;52mS zLy=F=?)%oLecfM6tRA7dalSm1dP6;YdlLFK)pC);l6I}oYnSuovM}LP0cjp?o}!&I zrmfGPoWF^DD1u}HRUzJ%1Z-O}?VPV7lgED2nBJNEfV9=b5ah^iolYn)EE^O(FrjE{ zEJ~qW92K3Q?-3^I7WiIeqBjh0RpvSH7_0e9nTGzQ{61kf9G1ry%OTI37#?{O<8eZrAbD15qixt1pNBB%O zrfNcL_7u*0`+N8eb~oqaoApH4;DdEZ&B`#yuzhM4mCmysqC#l%uG0_Sg3~BZBB1~2 zt3H9E{p!&hu0Gwuvfq-K_m#yXZOvDx=BV}(^?b)XG z4xC|lvZK#xCQ6{@W6Zomz&=YiXJ|~Zw`V3OGvx87S%)mTCmaTsljQm5Z;&;?B%CE$ za8bf-zw^KJh!$GlGEXKjTDc&wDo^2nQx5456u(Qv@+e2pjv?E8KGDw3UPOa|TIofV z{Xh(0h$sCkOG`2pQNc9hXSQ&vJ+{Sgji*{QAiD7@`gLRqJnMy*g>xSr`@|KKtXkp6 z^yy9idve5-jgRv~_erETWYl;{f=SwASL`&V#+e_ywxd*7G8vdl+g)r7CRtWe<0+BT zoCS1SI<$I;>T9}4n1&@_27ljMa-7oqRS`&KSNMEvDC@IEBmkb4GxalH6)J>3p&1Wa zCPMrB=(f>-bssK1fi^1*tnlpU}vokW8C4_WYkFa+M3e^3Im|KJ|} zKL$JecZ9|N6PBZx3hvn#MLiEAlMd5KT+FZd_HBqu`U&Hwe}!jLu;kmfZ?%ym(qTIP zP#*VJ9OMww52e^t5?DaB&yxzA(x!X9?(?#M5++MaNa1}{l0qLz0ehdPY151KQ3O*dJ zO7a8hNpfHCFNKmY5f4f%h4$rBNGE;?!IDUCyz7kual$`6QGfQoj6(T;YhwQJDgPTn zHvcz=r$vv!%nIkt(pX#Hz*+=mNBFIWRarVp{(~6$FOH~rN*Igr^Jx^|(T&f5(^p3u@Zv z8zx?<8c3msth?T{M;qFMXzLfG1+Aie1+B{EY|a)U7j|G2)(LkKRwKdiBL%D*MDQ+L zMc9=#9XGu^t1BTOrav(h|36_Uy$NAw`6;kJ?vpCpK)zjuUei?d@Zy`GVsW;?{EABJ zj-gKjR?=s7rW%oU(5-&^`JSoss#3y~2K8?j^%K_I=6Ogk6R=dFvQc&l)%yZfS=$u- zsn*ZL+^-o~s&m>yXHM{xse|;tf|T4>0xvfo|DJCsW_QuKfUr$z6AqFzSnxP6~+N0y)+AFVGSiPOv!+riEL z`Hy%NP)MVGS0Bz=j@Iu?N6_|Hu#S|IuB#KHEcf4l`W?aIVzu^N8`|1kCqXNWub}60 zZ>M0^Kr$EAtTrv~d#T`6ytZvahPG`>nYQgsccHR%O&M|@^`okAK=ks;Zk~jU{JXJm&kOo}+Ovi5r*NNPe|9WwBok0)l zOQTb&)vY;~3@B~O3q21JoWACKkEJp*E3}`8+A;dpw;>CIA!Z^m1CpwPbOsIL7XiaEvpQGZYP%cso+S( zN!qouQQH&NoC{W75#hEk8>bX! zdF-@Yb)>`S6}bSIVd{b3pzwEKmf5<=mPpnP=@A(r=r&8xPR`GK3b5jB@#?@OEIc)% z^rvq#mQ4qH6PW4w``s<2jP2U4mtg92y!Obq&PtD8A^RJ-DdU>TR*J3=R zVnU3v#IK3rE$7X6iih`XVkE4&tssrqa?ydHo!5UlCBL2+em-NIo=>p%I-!#_t3jVP zQK7lm<1%?8d58s`wpmuI>*Qr}V6A4(O5X0TC{&U@vP&#g6#`e|*N3Xqn)z8oql_kP zl9I}g{cp=wo1tYn)#~Q;BohCG^?FQ7H7orD!IOj}QRGcZEx&Acr014fG6SNcXr^hmo zJe8JT;}m*SQPcvvUu4Q0&97o%2a&P5ovh9&OPupuWv_2nU{;rJMnEMY-|hqE7U`4uVuH~TiF&Ss zJ%P+mHGx|e^DBIRh5V@UrsFR`f`63Gf+wvE=}j>h!U|7Nf|C}6^-wqDP_Tp+5LI6- zb|dK_Z1U}LGUhimAfrX$o6jqd#>KbVKVAPT>GuTMr&44p2*1C_`JC??dnF?xWL2hA z@Y?uvoPlbCY-~wvH;KGGR8g=5Z9ZHTa(ixPtJs*+r;W3LF?YuO>GRh~<-IgyR$Xbi zpDm=}ra5|kk1~M;7MNC3EM~D15?-?)9X_zE-m;jV<&7Bt>6p0QDyh%V+}ixyESj^n zZ--QN;#ychBD?iS!`eT{p4t)7#4-T3yq(Q5mNM9vq@h)Ro-1gA)ZWK*1?nH*gA!WQ zda_8FbL`ZdjrW_<4%^85*huRM7^3Z7)iXnp-SiveS?R%gfrb zW)*X>#VQJvpvPZR*7N2rYIY0iFAVQanQ7sxuWF@%z_)A6f}T^GWmZ#Wo!9~&yjYB}u5Qj@yn_wsamk~*EcKP~R-b>h%ds836& zMl;SA+Lo1BW{nW(2E1(5Hi>fXQY1LZYusQ<&(t{kz&4R@PO!J2CMl?IGob@;d7I{l zR?+#$*Q-X4JWI6FOpBi!PTbQdRV!gE=o{ZC{Mh}{S_6Wwa%}q!j-O_N2?wy2o_419 zpy0OVxo-#1QRXTjEwo?WF3t@O&{ugk^GJo=A|mqcmUkm9IqYpAODQNZOLI6ASy<4U zkUm>z8SSo8={S|_-7cr1zmPxYX&Ro;J~fyBwm9eOb>f~zn%;O+q7{BxmWGPr%p(;g zODjdqw4fA`*99e-Y5bf8dx?siioFr)6HKzzZ;LJaO{7C`~Ou6S%`?(Z%${#lI-QUK}-zQc&au=g?P4ks1m=W-?2J9)7Qkdbrq zPIOsVJC&P#J4WZ*(IBHJv#y(X{k~f!d4Cqn4|~w4@AHw!=XV$0`OWDVs~IyE3>C1P zWbs-Jrc5|}g$0Z7oBoV5U2c|ycB0FKjdU;EP(F<_ZkyxSqt5Iy?B(&gz7LYR*R$4M zG*H<}-Ozk?;bW*>;$ZF}6wWQhC8nLi>-_Uqp|KQGy65fD;;@_1h$_JIO_GHMU+9AK zn3b7iN@)uNhXtS8bt;W2lbrjRd?F3$JIqWwVYPCD?OaBk~qw=I1j?QOkOZQAa+g@G@v@wQ~d?wG6_-(cVZs$%B%L_1i{; zEA%^DOQUs4pPUV?(I}vz-oWo#lWnPAqaZmGki6vKN5xv9Fug$WG zIH}0Sp4{?qT}#vkQyzCx+SL_MTGnNASe<|C9oG5X-E{KY+|R9ici}tn(N=|RhkXP5 z&Rh+N!(A9xK)|fcqXvWf;(qPZuzEBAXMj=M3$*3XGUUkb5_4MlvOt1=Fc=QCFx z^QvO*77PlQo!S{d)6>zqlS_oBrKR=c_q{kEShm&B_sNWwaz)SkI+$Q2KALUo@=h?m zE8`TJnVA`pxBp1;SS$q6yz1H2;?~fe$H_AXRAN;|#NC!oeK`EFbMWlP=OUXF+6rVD z*6XM}<+hX~s4FJkNOiD&g||db4@9s=n9N4i6S;`s^tHkmxo|D}xgy;6>_#Y?dfs$y z6z{X-hH6*>1m>fr(B=!nBSMyc*2(oFtnR@zKEn2bt`=>aU*8f)=TAWzY@aE9 zX0YZlDjbrjQ*nr{7qLm~^xdk=ZVH*pIB&478ZqN;&2pC5Jz~Hhv9@-tLq>Sl=npV2HBG|xZzqNv)IoYk; z0AV75G_SBV5NkenIXDs>hDD)ek<=B=V9MqS7w~pVFRT@9h?J@52amNFIuW|IuU~)1 zl%SnICZXApFOV)u=P{I#&4pU zHXWP8TY7^jt;O6ZVo3H?TEu{X4~^}+kA8PvAgQ3C%bc6}CG$>L`OY<3+}yfp_F`A) zRHi-Jn)S|$8yQf+Y|!sFw6BE}sffI})vllgKLB4`o)NcZoq4qVqS^OEZey#tt%JC& zhhNfv^qHRmM|aQ<5bg1eY$gp#YFCg}s2Lc(-942`Im(ypfM1IrdXB>yt-qoHNC7UC zx{tR4Mq~B1G!?YKf7)B z(Se}#hJ&i`F9E!}OAr2(!-s+;zzD$0Zg4o=a$m5`qz4{!TL<_ve>60!?U1*mbw1y< zP|5?k8nZtOEaZ&-WN@usZMWN&3!&?M4KiQ{F=awnAZlVSr;KT7B ztIbQ;UhK0hOCJmcCX|s6JK5>oIE{7cGhg&X(yP5ro7TMj%kW|mr911*r5){jR=rnG zQP)S;Vcme1HpiX`h!uCvlUA&Qi<(9a=l1{dYaceMbX?w`**Q9LmDr$}9^0oz4&fGs z4350}D{oMOw1+g!U+0_bQ&rNC))mfP4_vsct3=9X1!lJDo>n+ks8@{HaAA8e0chLw z#m9?n=QSgcF)SL6yDmoGM}jK?aP$94;_TJ~<3!7?Kq5Q0@FGKi`2VA-(YxagSmfqj=5y+ zAAtxYhm9_r4_2p+ek}}cS67cgz_mwZTi22EU;KFVzekSWNCC04ljf(KhePMx!pIwQ z=iyyHFZHXKPOi1<4u&6Q+dynE!zj4{`v~;h4VhL!=yT0!uz0n)(ra|#N>}GUACL3= z(wVg-iiA~nb`HYe)?d+v**Ma>Tg?hea3J{Tx=reQ)BA9UmM?`eTcqvymsLid7W`TS zNmdbRaM5H}Td87&Qui5k%iI+0g=L_hAOkAe|9Ph0PSwX-+agh5_Ez8R>*gUhEe4}w zxawe5GWd(K730HcpUcAN`I{m^&x6U3+pqMZu8XKow?F5-!t@%`r$_$?Gr;uQCdgvb z@-rPND|c5N@<8Q1@0|fO7rX_lV)ZT4j!bnfXI{x11X8D+7i7EhvxelGC2N}x$dDxIMV~dsGAbjWx!mNa5E$Xi>PQ zHoKJuF;$!dXY0d162RB3c>VOlmp0IS^SvM1wA|M9+~SFU)Cpq^nUO#ty_svJdND~@ zO>{aJw4PfcEmKbJcpjSlx(}?zuM|qmkX7cT#;26SS}8_HTjmAYvU&vcxjx&tZ=NZz z?F1~LmO!?zIaGhHQ2{rtWTH|LW`?dI<}j7^;u)aC7zEX!z>vf0eSh^JtWME1GnLd|c%F&CoK% zTcqbuK80DH<64TKYmpScwmJ14#5v>|(Owqs#B-du{E2F73XgDDmC5rJxuwQOwc1_U zN_)N2W~~{{@qR#MtG|HVkOKpXli*^ak!L9sz2O_YDtS{obWI+D{oRSza_A(nbA-n^ z&A-$?^vA0Dt5E=jjmT1ePje*E1#m)ObjGPERz#!QXIP!;5W?lv^XI#DXsaOr=LrWc z^&7Z0f3s|gZQkccK0U`cFktnj92mq{x_!4sX$3VH_Cn+vfR~`Wv%3C6^RXL&MjZN0rb^ba?Qp zB+->;Q|wWL&{BVFdI%N)tu9=Z+(I;#AY4qFVn=R;7O&Bxr{oNW>jrn&wW|n%3!vJR z0|U2tDApl*SF>VO(yp#D6#G42aw>xOA^_B0ZjFx&ndM*VN0rSuFx;j9y;_}9r3?O% zQbStL`wmWudftQR=SI3anj-BF0PCjHX}9}B?KopTlqV27MHHU`BCO|@OknY0S=6+l zy{+ZG&|5a|xOF-&BFDoB(C_zHt1-`JwqAJBe7ZOc#hA6D#jgB!+mx+}8BUv3gkg;= zD{VBzg{TOqx!vQ?$5T01UkpCuRXPZieX z9x(6r%-W`&`)sE)FpTD8tII~f&6@?G5%;f{b9RPq`m?2Pw}+h zDK%CkHgzXCZxnlaq0mI+aIm{DP+!k&4?)s&v`MujA7ggxrCiE?ed?{(F^(uV5NmOD zJ3x!h!Sd1W$hQ@>2HUM%Fz{we7wj9_71>@9Y7l5J)@10?zU4WE=|D3h9gy#ly2yt} zt&ioE>Uo$-KK<#%<49E=eUrNRgzQwGJLcMg6`;On6E9sDBX6fu z4nnIt85%lnZ;v`8GdsD^*TD=wP**ty0~jGBO=N2M(SnO(ZMn}i9k{jiTz_((1UXT0 zzhVk}=L%kH8SLzw5EzFwcKZD^VsMk#K6Rhj#uQqIjbW$chC3XhPt8>KwtM?$c4|6& zSI){^Ra~MSeO76cg(DC{pq$x7C?YsnF=~}*fiY7&|VO|d`zse*i>u3{&Z0v z6DVXMEWzmc)+25D-2r>-e17dYi1%B+&6N^u?ZL_U%scer2D@5SOAZ*m%>K_oXRgh# z`}S+vcA~}&9ziWXTE7kRc~DEzZY(N`hM_fEMf~FXKgk^qfT@5pqkS;s-;Pj~N%z4K z9W9rCrLPe#hm?>Fm$IhLyx^B8SomU|&(BxTlDLO&^}eL~)w*kG<;+|eX!ciSj;9}r z1(#(3!?}S^L?_GvX^9pgcgy)8opcM6+}%erFSIf(G;%F*jUPYSMp)NaCw$xWTRDD< zVk(qX>BM>3y-6lfk~OMSDKmqcjHug?MwH)ra@Wm?MVrGv1l}!=pNW=qd~Nw+PQlMy zu<)gjQcLp#?A??`+NbfvF90D+rZlbb9)Jp)h0{CDXK6GimPO>UKt;*|7so-00-at9 zlbk14)-vy+-`3B)3x6i|M%_md_Gm=eQvO~2TNUnNK*8RZLUMkAf*+%M8|9gFa({M| zDs5cjx_l!vg(?kwyEF6lVsa}07{2#niwSKoNs_{A#Pqv$f=X7^i#cr}W^5A4Kgxb$ z^a3(l(TwY&_L$WsB{N??6?c+1Q2zJ8^`)nZu*dfQ`7CkJA4=(|f#cQjeqEeOBt+Iu zBVd&%aq^RSfT|IO;S3%8 zoTVm#NtC$SfR~%l*ox5)_jrpzR7WD>nH3hM)TC_hu&BF;hS$x(+0|OqetbUqe30|L z7Bhy#J{S9rt3rvhaT!7H%ik2JB-)rqLndOAAI8k0^k#u#@?0?0zA&G&2?h8ygrXq@ z22F2$HjAByX4m&K__fUhzIlsRCbY@adKfh_^kC%@?0RFcw;p9S=&G%)U4L2e@&m;j zYakwRgV2gQGwCJ(EJ)obKIqvXK4I>@U)`S&`qONTv@hRhEu1x>MtA>)4bRB?SWd%G zuhC{P*fB8MV=L8^t_FgwS++UtCYH*`*w%A@MZXzb9Z;*403ytezFeX|Uq20DXbj;c z(ENTi;y!Bm#w+pNpoyzgilVqpToZyWGSlas$Xg0NrC`j~&DtC(@gxb^o9>>leK)#* zlfO9z4j<6>fjm|Nis^!dDYxm(5`ZmJ-O_bUv%`HYMUeM`u0`wDRmR<)ypi-he>I5F z3AsN3^gl-kWy7}8xldHe%)~Vz1wEVI+B!Go(1AmRQYZ9 z$`rz~NQsQH+2;;Xwo(_gGV;om+j8nnoo2md7YpC{AGLjFSd+`vHj07@2#6p^6Htou zULv5cPa7?W>k$G4s%_*!j*Dl8Ad$t zoiuSkA8q93!aks#2=hU^c5`_--4f-(Gl5^P-kBEdWf^z9HNMCu^U7LmVNj?Ac~gG> zc@VySY78O3kK42Go0~Y>%RQF}i@NUd?K;nN>Pt(fDRVFF+ECb~FCL#ye+?$@3b+4W zUY#x&Qh}%|tjMtXPTRyfnYa~4c$tsLtWdUKOUrOETu^mN<`3E-f5H9mL)+U<3--X#$CpDMg4$S$_#%#}8yi!y`QhYd&S0dylGUd@gXcX1u&{sW&U6 zH&DM))*&3|xtgfP-H|Ww^X~lBjoTY!Yw!hl=<$|)M?3Ji`qZVWO)5k2gg0&E^N<4z z_2g@x>%bJTu$6de?hU_`4H=_X3n7OOdJ}-%elT^Xhy4XTEOxBuo5Le!ZlCQNddKY- z=6t3s8g|=HxO-(6&27VINcrM$>E-B2wywtmGJA_G>rIh-&ycI9_be~&ZTl|A@-$%Y zyHIPHLwR~r13YemRwM_ZjA8)1Idbdb&M#CBTg(7wyMQP7Ws-7-atZpSSzm##BRkqv z31`LT#<)E!p*2IBpV>4lJLIwQXh~*_mV|a{d>hJP{t!n>crZmV90HwFIKd@9a-};v zSvcq3%b9Z_vkwRMhkjm)Vov%MA4^>hn2O$)j2&Lp|C-;l0tF0It-tCI=e0%ZnNxt7UUetP z_l5&6!5+cn!!Pyt*;rdQ+a6cL*RDj6CMzy7zG{7~CEvjF1=e)3(~{iLf7(^Yoeu>* zL4R|+QhVFvP(&0xzpuc1hh_IU;|T1*ZyMNo3Y9f+r{nyr;1S6>4L7~@)53U8%7+cf z3)TbAE&I3y?l7t{LhYWBo(L0j>}#|N^Rqo&jd>Oytq1qST!xs)IfTPJzds?D%$kH9 zzzm%tO7*p{uE91f#)s&khuy6Oq%lP0-pe#aBAc8Hi@L1AKfVfT5%oV%dg!ROKs{O3 zSiBNo$^pPE5xfldr>94GETKQXlJ^JI7Mk>KUR%!Qx%;xw`KMz`U*w*49c<$A#S^@Wx!4|e zQB9@-k&=-s>f}6o(BW_7?7UXLX2kf>Z8M_rZ8HTU}`zp_-4s%27Pc7zrZmI!tsBQ{!i_ zxl*{OZP(4}kAze!%BH5l4-9#~{?uqhR7#YTgjokG%iq6SZ8JMst(C_13x~>UR z{jy*qVB1`%?WBdQ)0;Ihw!)et6Yv~f@mgd1;4Zu6M80?ZZ!ggd_RQYox*@_M@+G`S zc6{u8l*l@w5$DHncN=DCr(m0h(7DuD0DS%mAdhxp1lZiQ&bBSMI@=sy)7M~=WG(Vm zL+SI^w^UwvEY%C5-xz)02!NsDWL}TqQj{T<=&Hn_cs`gEw@8I7=+%h);eDoemwF-4 zw@^lF)~kqwo0qKjN0e%y~n&4<3&dLzLpMu&z2HhWaFsx35F_X-o9HX zvB6_c0rd2}wvrk`Z~uOeELj}<3@GI_>~n=+f-{(;>%0S`-7JsuBxTHG8Ps1oT`^a~ z89;?Q9Oh#Ax|byfH?O6H*h=^K$t7q08aa!Vd6%daz$dl(Tr`jL>Ix%icF0pSSwrN_ za&I24@t*p^+aeq8E%=5m<+WY!G-(iDp?81Zu@bFn8&*9HMi?-GL(J|+*}0xdX1qj<>~4Q*1A$^Rh-?k)`Pr zupTZDr#=d?+ejnD&@(E)N+3@l0o@7?7Ow@|(wMAeY<^z?Sz}Iny_OmoRf4`2<7h4UfZByweH*{UCCJ{e^CM+?y-u{LJ7dio99QE-Jdi%fbCAdhx4W(W!Tx zVBha9?`0Zx5&PF6oyTfX0^bu8cSu~Q<#=OKyXYY110g6wKA>GFx%ahSAtk^CwO$t1 zM_tZx5?l(;dyEhF>&XxjA<-H^UEj66AJtTzY9EpB#AxIuXHTJ_x%wQF-K@%ABqO{; zVuo{|lrP`*4@z2}6AyKl*?vk6)5~d$DUIFcFG9T8mfz#*87t8+2NmC%%nBK49jl>= zkh2{uU)(8+VNbcUo-9Oxj0RGbhczRje+~Z3FbsLjUC+xbsD-ubONgvkFBx;U;p2%< z=9!*`pF8GHSt@h;2FH1268^n`s`NTiRcNtR;doGG8}1U*l%oikCZy(VhM6_GBW zL0~Psyb#Hu0hD*+Cr4V`{Tc4m<(?nf6WS}mD`{4JTVz&5-SN9Yu6>9Ihpei=9Yh*L zGcBI>tqEPD9+0w#>dN|S*~jo?r13iQ`t`k)->J@=sh3X}#s$H%Hv69rnXJ`cwT>6s z$sulzG2tjVlGwQ4LY`7qn`AH|D7O30;su<){6O2MTin{aUuXm9|Gg6Y1y_XN`qI_& z)=-Cn^P42T-!7?BMdv3lcPfM8dRw z{5UnXTBbY6VjNx&Wg)jaGz{vJnZ2~F>uMLkc*Iy*vtuWV*g=y|HmG@@s`Qe)8oFn6 z#SSLE%lNSP_9pVfqdl|AaTe0b-mV$%>?;Fwd%Jy-v3t?5*NF+AwK9NhvfSQ1Dzg!; zlU`;8+E_**K31-Azu{L@n!RV!4x=AUDKk)cu61H1Q=9H|I&*>mlg8&KzkpJK@NV#a zvu0nxj{W|XWVuCKbrPrAGsZnAxQ{;>Rppu#xYXT zhqcUnTw67oqJjMi+SIT0Z}ts$gj~ z3o}>EL^NqclkEYmycBjmZ{!SZh;?c`xBSMkmfd|X0q_75aYR?OymQUgxY;0ltqabe zr3ul>D#CyDc_{x@nelhmPRzDP+m}}kCu1vB>6d|OUgqOdq*|x@k`Xo{n891aNv!!9 z(?jj+=J&-FpgI1bI3D*uCSN=)@F*%2t zb(&=XCdGO(^Yr4FF-bn&=1_dr!ul~=>yeK%bG_=gKkC9-$@drhRn$nq@#_P>wlh*j ztC!VxnnRSWKeT7@Mt-sYP)kTl>FyX~-e@%sMSPFYIPfX(RX1s?h@MES=&nd|hMF4N zn+djZ=?oj#5F@*UzbLD*0+kIWRbqga>?X(n#)sl?dJNP8{;qaQ3{hXd8zrCN0yA_q z2;`0Q4BvuTD%K*Oqtry7PFKMu8Fk8oVA5I%v=JO%DsbgNFh^JE-UKi(w_0%w?Xvd9 zRedtnUQcLRO?39^`UqjhJr`!r$dD4>Css%atgNmGj_zk{obhs<-eBZr3~+r}vTmxj z_zzX+(YdtqqFzC-#xb!kwBO_zN z+HqyRxhEjMdL4d=Wuwou*LctuTTi~e2?gxHPNjxl$8a#V;v8xXndV=6@yL_;2fcdq znIas|BlTQIHq_?y7KJTQcBku|zP8-}(_TW8GC4^nuU^^_)GPWX%`gS@()N7f&q_Y` z+1FnJhIfrS7yrOhL8SBBn%qiV&my`|QTz^^I}iq~N>?Kx6PSb?E!x?s4`p|% ziG=Nw)(l*YccqMQoNn|v5$D!CCb(LghW0jpa!(*9P@i1pid|6QYAw5$EF#}UBBCm$ zO1FOhM6vDWN^gQLghlIkA3qV!@j9co8OZ5v$eRA^>scpGy9&_5uuhGhV4*|i)uEAs zKTgR=xkFqOpZ5S;#;Ab;JTOaKx@($rb%N-OiS(pAq$3<(AWoJq=h84%67fWAg8O)HLqgXS;&W%T#ZCP_cs*QB8RgXkGYEPC(A*px8IqJJOWUN z^0(+-WS@o=hwGtFqnrsW>b>k*PDqyl&A`)5{aC0pRC=&K?W*nNZC%;^o^9xtgEy{d z?@5s;=^lmNaL5vLo)xm7#&dlw#WQ^vLoQadVrqb60aFj$>9Ak8Qmsm(oV`bC?afsAQ7#mmSTo1g#nK>2 zHB|xAB?w)%Rh*)Ph6IsG{t4A#8bj}y4YPz?#219a-2L@H!`0V&T~jF~$G!=qYs|U) z4Y70cS+eOh4oqH>mNQ3}H2H;Px-D5E8Z(7+U!k7syIbTF6483RQ|7vF8duksm!>h- z^0(gq`8c3z#_eN!t7>$CJEzS(X=~OHrEvauT!ejFU^4JXtR#r)Z|d|Pk1A+bs>Yn% zi$jFQ2D@v#_&`{>i|Owb zw$W*AMpd=fMrjI(&RB;aa?g>jqut2RQy`*#vMy>|xA9n5brockK2wkbkN$RzqdkCz zf51t9@8JcStJ3m-lm5yPa#(5YEzN>}|KnmUXFY~zq9t^l{zH-AS+}qn%m&*%3n4&O zQpw4wL6$#;O?yT64%4y{x6iKf#rV{fSA298o#H#r6%h(vQcgQZ$aP{G`q7zOulX68 zCDz6wtQXv~x6v|FEL5a1L^l7MwLtSsvV?BD>Bp}dJ@=kEg&>cC6pldjA+DbJ?wmyiB70uz5dg;G7Gmq+|yW>S*JY+QG~rH1r8;W{@Q!@=im>hyvX1h2NbuiINO*ruYjC&?FP($nwfc zouvDGw4$%4A4BdLrEu+hVEhH_ilNmwDJv{2oTz=EalHPHLqQ}uFI2zsrkE}DUia^w z@MU>$HSX5~jbqRaMVO8#mS^oQ$kFJ}T2{Dy9AoVsZLK!C2!jln1?&y81d<@4E*X+w4e#Y&y`*8|}(zxNsb@;16II5e^;m3B)m$&Dc926hch1MiKhC zvK2N%lHjQHww-}Op(2fV$KRqI!tKAmMNzZ6bw*KLR8nJ#azh_#j7h)fBC);nhhe)J#<8bg<%_ceHzM;vlP(il;7jRS@oPmugOH*J_M(4*gS65c+s*qJua5-aK8 zK(=eZX}P^c?TfaK>fg)Y<0QzPAlNmgA0k5Op8KrOK(w zp?Z&dA$N&`(*!ogB%aGbY4Fj#LnV58;sGEpJ2EUjgY- zi3R-?MPgyCbF`18uu;^Db(>DS4)8ul3&0j?IDHE8qq2nnHK&~^i_u}cvu=b zz#)@(LW%Iwl?H4`AP~BefbH7|aa}3EiZWuH90vD&gD&aKf_rA8`+GCt{*Y})#3i*1 z_^Sf+Pc;~;UlY2f5_nS_a7=^XqLuO@FQ3o zBxcTXK{H^R2K+k6%-y+Rf*WM!hQsvXa+x#1?d@pLb_Te)65X>61J^a6qg*n;)lulc zGHIu|3FPEiG&(a(+HA!gR90o%fU!av5fSKxb2~y~D)Q`D4bf5VNZ3$>Rh$MPQjJ7T zR@^IoQV*I9xre&NQ-rqEU!TiaSK6D|cd5iSxMDrCP%$#fAlkhLY@@s>_qVbH|ET(R z`V8eR5ePO$9=)cSv_C}OPU+`P!!=;Ca9wnS(LK%HK3!O2OxmD}RIaA^A;IoJ@-g#M zv=&zAy%u&}X+)}o`P7OdPPYG0h5Nw9_dc5IuKW?l{Ju|_z15l&6gRgkuzT{P<<5JG3{ZF8mmbSj#-Jo4eb>8V zMY(pqm{?HJO%cG_m8qW~9(JJbt*CuH5Ghmwz=7QCL_%fj`XLHfYXldy7-0D^qLW$# zAc5QrLEgm7)Tg6g2W7HWN2AZc8KZzqe7h0=PBv2cpQh7#$@ERRnrs5bQ_M;cv^If>wPm#R9M zq2_m$A|*=5WY~R;q_@qS!*+k*^F{g2)RR)8o4E*Y?exQx-fIXpN3gl*7e(*DDzvcQ z-c$6`+_2O4`%=J`*q_ICT!Sw9l!}Tcjs6ggWDEL^8zo1weO|yVogmqor*L0w(c_JGw6L!QwXrj9LT)d3GR9d& zOC7kpj*$k);V;Dsqqw?DprR;^5ZAB83db(_&9W|mMydy)py&b!mefGiXS94PECc^q z1CObX(Sr}e<}0mVxYw7U(;~~ax{Bw&xQaut2RBqDO~zd^z)ex;V>_)XP{Xhya`I;W zag{dHcv(?A_GyoV>VZ|LJE5ong0;#ZHuM+g{LIQVJvdC0$T~cqX`z#0-j;{1sGo4& ze}Ng#dDg;@PJgfO$n_9h`~s8Ws5Dlpf>9ccBB%f~G@d2R!9<-vJDXDCJpv1W4u|zo z@sR)!M9xcRBzxrWAg}{BK0C;?B7T09i{~QszPk3JtT5Zm{g=YnLvSin$t4mJ5|Y#e zb@)9leT1<AlKlOKpjfzJa96h7kA+m`xzju&#M z;4XmEpP%z;OAQSsV`hM!!jg%1FUWn1{};L0#O4pH8dQ5yVRO+}v0_yx#)nfOs1o`Z z6zx=qKw4VL6>PT|V=+9ac~9kbC-UzO~3 z_jHO*K(45oJW$8Rs{V+_xD~mddTjNArA1h1`@XNPE>6hP?XWL-dafm)pqUobwyp!n4`+NfK%dU{8qM4O_-#|!L=)^g%uFFG}?Z#b3k869clG1tm^q{n>2 zHnBJsb)jlBzRK7uOo^G@wo6cy9xSNQM~glM^iiJsmnNc#-5}tTEW2^BEAya3m}S0@ zG|WPUPLi2()xn-mUQm1c#Ok4885>jHpg~1ct(?zTb6(?BX8hqpGA?~m5)zWfO|&I+ zcFN8SaSwtEK;`estNU_Q!Var44&k2E0IgC>aWPeLv@`RXv_N3X*(kYbEKVZvW=>GSl(padAW^u>*QKnWcSar4ybnQ|%tLHGxT3#F%Jiq5DPPvCOTm=25e z#l=&zvdW$U@az$^f7IjNYz*qU7^h@hcMJ+*2sg2A=s2G$EOI#lxNj${4}HpwUuB~dA8tjKE8TtAmb@XOp{^F9`zqq9A+*3L!AhEH!y4eUh zckUmdsJETXf41!bt<7XBqdLKr;kecK+Gdzca5@ae;R+uW=(El##Ur?D>ZVq;?i zaH!>AZ!f#cZpR?6Gj%8A$YHb*Pkh_j+6tR{f@lB7$pTRyGM>ndbOZ>3M=|Yn?!Ejv zE&r4nZ3z?bC*%L$kuk3KzbwW0(SH$J&$1||vWk~oh5_&Ls zgMz~F`STB_r@?D$YqGfQo=^d!|1u{{h)H+@4LCtBIV-DWYkPh-&aj;O9|}iX!c=yQ z*fckS5xl~n@P7QnzKdz2&Zi zJMl)!)t&xCsV8^%Ywqx8oh;`>@C)?qqH@`n2XD#T7XWm|n zpq}K2X30~cmVa?ke*~3TzQ!7`ns|Zojw;ZgWA#Fc$`Pi46Ln4otbVf|a%aC+e7;@h z+3cdzMQQNB3k-B*RfaMp$HUI{*d^WP%`YmNOzRv!rU{yr8kQM3&o$R$>YVZ$z%!*G zCj{*Gj}dadxMCf++}8fM?#qo~_(Z+SOSnf56Lzv9YxvQg7TjmjMD7HK@EMlfC{{~g z!=e#Ifd|-6UL*1^H*&+;g_;>lgkiN^=y-FK|YHHAJar&|V= z93Sph4GMRdzclxVTq!N991FihD)DOZ@y7XfSyj8~lx0u_88ut^c4dpslvP-pThkKR zoc~IE^HyP&_ui27cAA;nXhq|E=|`n#EMdlds@kU0yO-6^@%N9VyP~#lFTNEs7jih) zypa>+z1w!^yxNy|QPsE8va1l!B(8e65Z2KHWi2CT^M6b&zyF>s^ta7L#b4n5sG6kP ztc*Ni8W?!`v-hBjPS^4D_s>9VNs)xjw=43*{qex{42S($uaT{zjoc{;;noj#tb+A~ z+xC;VwX=)+lXt6KB;3<@2wsFJ{giI)e*+g01~((~W5+}lf>#tWT}_qPJK zD;oC+Gw$1PzxmOY-S)D>`5@ihj`Mbf(;rF~HG#*!R}v(>*0n-@_46F#5F`6X8@bzY z!tLMFtwKwx+K--#mIO|P4a~ZRw za~+>?5b)qNIoswH7x!`nTy>|^RTpU^_K^KiooYg_GsOf?Zm_3vdBgJ%j8l zd^~DzW5n-iy|n)M>E4J=F+t7wQ2bJBB1S$wH!0ivq5jOmxsytQ)8T$I5hky2?pDxn z_&|XBWlu8iUw+;nLteLU7ARYkMog5cl#}|7sXXCzKYDszHu$uuTGg52>)GSBA*mUe zL=1EB9Nom(V=zx?#N~Q;F@fCqP`O_Ec?(Y|@ij*0MG$HIp>qA9L_Ko}v8Y5)ztI_8 zi*j<7)<4lTXi3BbWn$t{XX7Y_k_a6GvjReHp)XhcRp)ajXNo_~#TU&VE}BW}4$mWfv?a=I-aj~X%q|f6e77ekDG{*0a;qNY ztxmS6MlH+K8lXC?(58{-uwyHWzmDeB2l{j+v8b%^Ih zqJZ&96|veH-$Cf4n#^h;bh4K!&LvPK8VZG4dK<#lzis4RA-#<;JV-I)Cgw z$!QEKwyyQjr-j*-1+O)=-ec1lANMuEoZT>O6ZMN7sJjXp9eq>Tz4U=cgi>w@7j~=j z!(*KM1g?W!j`ub>+)ap|kzBs!<9WN|xrRg7qnpjrn6PCub7I6!!cDm&T#w!Pmcy?6 z*b_b3&D(WBx!%vs2?|Fx-`mE{=tiG>LqQ{IHvU!>0LUGG}v9 zfwa8nG7b%uohPyI+^DMo6wL({&0PcI>go==>S|~#j383;Cq+b_A~>&wXCQ`ZoFN7O zGdm+=E7+-{Cv;~a9z_tt*?aQ*@uR*ZsKc#iesoiQs;eqW(V^nZ_kf`Jun@qpdg`lE zXt#q+JZj#gTJ`h_QK4^-D4>8?Aa6;)N&$xw^%l&w3A%A3YZk<%v!*!*@KpRXutlu$ zxcYBYniaVrF*8os)drvXog~mhb+hfTdgDH|0#Ld0NY4Iuwp@Or@>ezwoQ; z8e%@^)KE;|x1GRKZK-=(66a;#O8a6^kOw`p$z#5$(O0(~Xr?)i=BeD2HlLXx1vr8A zTEs}}|2DNB^ab2}_+z*3kC+_fclNaW`=2c=D)6E2Jwfd|Vf4oIcM~&fx-udiD83UE z-l*6H<$jItl9iPmPC&DwQdx_^%FY+7ye7>lX|QxmX+JNm-VffEDS{JUAF*#ue+fwH z@*(Qz@4P{uolBJ2a_Nhw`6I4@1=L&gF-{$+Qjn8x6{kYFDS8ubUbsqM{aOodW#L(sR4p7Ef_Wp-4vbqV3+sPgB?a6xh z_-H?PTka=jC&RaWzOcdTliIW1sN)Jh1A8b_!E8XT=GCLKJALHICJU$NAQv<%25B$l`zI({y80p3iux!6Yt5B;*Cud zVFKzg|04>5)D-`pP0Q$`IvftipC8@>LQ+kiJbArGcyqymgMZnUtaub5p?!bf`@Dmk z30RK8MVOS7lnfw|5P!4UPZvuRWcr`207fLrad9cROqP4((E=e?1*N55_V@P>Yd8m) zErprYewtMuGE{=pyh9Q{$o)^Bl38`I0E3CYX}xnQT|Djt*L9!7&fZ=&*QqA(!1+@_ zfy~PgWv*MFUs9n5fsmSCM#jdQtzowAai{K@7urs;RE<^#*YqibEWFXv*H20lwyON3 znSMDuP0(yTm}Ic>sCuM1M)iXf!Bap6?cg!p$OIH{WGKdiBSW~O+p2C=G(Nc?6F!Y` zEs!E4C;;@pv=0RZhptbOEY6!)F?sa0{putN+-&ih3`=5uyj5%I_d*+Z z^+_KKm=v!gWJs>mG+rmX76@Y2Ghr9FNQ{tlktN>!(vfq%Dn-(C>MnfIM6#sx$4dYC znd&drUF2t^|I*5fbjmEvUuiEA5)zO9yFc%RVQ9>5<6BzGF9y<3(NV5^YW?Q_0etTI AZ~y=R literal 0 HcmV?d00001 diff --git a/bundles/org.openhab.binding.govee/pom.xml b/bundles/org.openhab.binding.govee/pom.xml new file mode 100644 index 00000000000..6a7245634ac --- /dev/null +++ b/bundles/org.openhab.binding.govee/pom.xml @@ -0,0 +1,17 @@ + + + + 4.0.0 + + + org.openhab.addons.bundles + org.openhab.addons.reactor.bundles + 4.1.0-SNAPSHOT + + + org.openhab.binding.govee + + openHAB Add-ons :: Bundles :: Govee Binding + + diff --git a/bundles/org.openhab.binding.govee/src/main/feature/feature.xml b/bundles/org.openhab.binding.govee/src/main/feature/feature.xml new file mode 100644 index 00000000000..8d0ae40c5d9 --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/feature/feature.xml @@ -0,0 +1,9 @@ + + + mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/${ohc.version}/xml/features + + + openhab-runtime-base + mvn:org.openhab.addons.bundles/org.openhab.binding.govee/${project.version} + + diff --git a/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/CommunicationManager.java b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/CommunicationManager.java new file mode 100644 index 00000000000..c3931dcafa9 --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/CommunicationManager.java @@ -0,0 +1,258 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.govee.internal; + +import java.io.IOException; +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.MulticastSocket; +import java.net.NetworkInterface; +import java.time.Instant; +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.openhab.binding.govee.internal.model.DiscoveryResponse; +import org.openhab.binding.govee.internal.model.GenericGoveeRequest; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.gson.Gson; +import com.google.gson.JsonParseException; + +/** + * The {@link CommunicationManager} is a thread that handles the answers of all devices. + * Therefore it needs to apply the information to the right thing. + * + * Discovery uses the same response code, so we must not refresh the status during discovery. + * + * @author Stefan Höhn - Initial contribution + * @author Danny Baumann - Thread-Safe design refactoring + */ +@NonNullByDefault +@Component(service = CommunicationManager.class) +public class CommunicationManager { + private final Gson gson = new Gson(); + // Holds a list of all thing handlers to send them thing updates via the receiver-Thread + private final Map thingHandlers = new HashMap<>(); + @Nullable + private StatusReceiver receiverThread; + + private static final String DISCOVERY_MULTICAST_ADDRESS = "239.255.255.250"; + private static final int DISCOVERY_PORT = 4001; + private static final int RESPONSE_PORT = 4002; + private static final int REQUEST_PORT = 4003; + + private static final int INTERFACE_TIMEOUT_SEC = 5; + + private static final String DISCOVER_REQUEST = "{\"msg\": {\"cmd\": \"scan\", \"data\": {\"account_topic\": \"reserve\"}}}"; + + public interface DiscoveryResultReceiver { + void onResultReceived(DiscoveryResponse result); + } + + @Activate + public CommunicationManager() { + } + + public void registerHandler(GoveeHandler handler) { + synchronized (thingHandlers) { + thingHandlers.put(handler.getHostname(), handler); + if (receiverThread == null) { + receiverThread = new StatusReceiver(); + receiverThread.start(); + } + } + } + + public void unregisterHandler(GoveeHandler handler) { + synchronized (thingHandlers) { + thingHandlers.remove(handler.getHostname()); + if (thingHandlers.isEmpty()) { + StatusReceiver receiver = receiverThread; + if (receiver != null) { + receiver.stopReceiving(); + } + receiverThread = null; + } + } + } + + public void sendRequest(GoveeHandler handler, GenericGoveeRequest request) throws IOException { + final String hostname = handler.getHostname(); + final DatagramSocket socket = new DatagramSocket(); + socket.setReuseAddress(true); + final String message = gson.toJson(request); + final byte[] data = message.getBytes(); + final InetAddress address = InetAddress.getByName(hostname); + DatagramPacket packet = new DatagramPacket(data, data.length, address, REQUEST_PORT); + // logger.debug("Sending {} to {}", message, hostname); + socket.send(packet); + socket.close(); + } + + public void runDiscoveryForInterface(NetworkInterface intf, DiscoveryResultReceiver receiver) throws IOException { + synchronized (receiver) { + StatusReceiver localReceiver = null; + StatusReceiver activeReceiver = null; + + try { + if (receiverThread == null) { + localReceiver = new StatusReceiver(); + localReceiver.start(); + activeReceiver = localReceiver; + } else { + activeReceiver = receiverThread; + } + + if (activeReceiver != null) { + activeReceiver.setDiscoveryResultsReceiver(receiver); + } + + final InetAddress broadcastAddress = InetAddress.getByName(DISCOVERY_MULTICAST_ADDRESS); + final InetSocketAddress socketAddress = new InetSocketAddress(broadcastAddress, RESPONSE_PORT); + final Instant discoveryStartTime = Instant.now(); + final Instant discoveryEndTime = discoveryStartTime.plusSeconds(INTERFACE_TIMEOUT_SEC); + + try (MulticastSocket sendSocket = new MulticastSocket(socketAddress)) { + sendSocket.setSoTimeout(INTERFACE_TIMEOUT_SEC * 1000); + sendSocket.setReuseAddress(true); + sendSocket.setBroadcast(true); + sendSocket.setTimeToLive(2); + sendSocket.joinGroup(new InetSocketAddress(broadcastAddress, RESPONSE_PORT), intf); + + byte[] requestData = DISCOVER_REQUEST.getBytes(); + + DatagramPacket request = new DatagramPacket(requestData, requestData.length, broadcastAddress, + DISCOVERY_PORT); + sendSocket.send(request); + } + + do { + try { + receiver.wait(INTERFACE_TIMEOUT_SEC * 1000); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } while (Instant.now().isBefore(discoveryEndTime)); + } finally { + if (activeReceiver != null) { + activeReceiver.setDiscoveryResultsReceiver(null); + } + if (localReceiver != null) { + localReceiver.stopReceiving(); + } + } + } + } + + private class StatusReceiver extends Thread { + private final Logger logger = LoggerFactory.getLogger(CommunicationManager.class); + private boolean stopped = false; + private @Nullable DiscoveryResultReceiver discoveryResultReceiver; + + private @Nullable MulticastSocket socket; + + StatusReceiver() { + super("GoveeStatusReceiver"); + } + + synchronized void setDiscoveryResultsReceiver(@Nullable DiscoveryResultReceiver receiver) { + discoveryResultReceiver = receiver; + } + + void stopReceiving() { + stopped = true; + interrupt(); + if (socket != null) { + socket.close(); + } + + try { + join(); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + + @Override + public void run() { + while (!stopped) { + try { + socket = new MulticastSocket(RESPONSE_PORT); + byte[] buffer = new byte[10240]; + socket.setReuseAddress(true); + while (!stopped) { + DatagramPacket packet = new DatagramPacket(buffer, buffer.length); + socket.receive(packet); + if (stopped) { + break; + } + + String response = new String(packet.getData(), packet.getOffset(), packet.getLength()); + String deviceIPAddress = packet.getAddress().toString().replace("/", ""); + logger.trace("Response from {} = {}", deviceIPAddress, response); + + final DiscoveryResultReceiver discoveryReceiver; + synchronized (this) { + discoveryReceiver = discoveryResultReceiver; + } + if (discoveryReceiver != null) { + // We're in discovery mode: try to parse result as discovery message and signal the receiver + // if parsing was successful + try { + DiscoveryResponse result = gson.fromJson(response, DiscoveryResponse.class); + if (result != null) { + synchronized (discoveryReceiver) { + discoveryReceiver.onResultReceived(result); + discoveryReceiver.notifyAll(); + } + } + } catch (JsonParseException e) { + // this probably was a status message + } + } else { + final @Nullable GoveeHandler handler; + synchronized (thingHandlers) { + handler = thingHandlers.get(deviceIPAddress); + } + if (handler == null) { + logger.warn("thing Handler for {} couldn't be found.", deviceIPAddress); + } else { + logger.debug("processing status updates for thing {} ", handler.getThing().getLabel()); + handler.handleIncomingStatus(response); + } + } + } + } catch (IOException e) { + logger.warn("exception when receiving status packet", e); + // as we haven't received a packet we also don't know where it should have come from + // hence, we don't know which thing put offline. + // a way to monitor this would be to keep track in a list, which device answers we expect + // and supervise an expected answer within a given time but that will make the whole + // mechanism much more complicated and may be added in the future + } finally { + if (socket != null) { + socket.close(); + socket = null; + } + } + } + } + } +} diff --git a/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/GoveeBindingConstants.java b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/GoveeBindingConstants.java new file mode 100644 index 00000000000..280a08adcce --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/GoveeBindingConstants.java @@ -0,0 +1,47 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.govee.internal; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.openhab.core.thing.ThingTypeUID; + +/** + * The {@link GoveeBindingConstants} class defines common constants, which are + * used across the whole binding. + * + * @author Stefan Höhn - Initial contribution + */ +@NonNullByDefault +public class GoveeBindingConstants { + + // Thing properties + public static final String MAC_ADDRESS = "macAddress"; + public static final String IP_ADDRESS = "hostname"; + public static final String DEVICE_TYPE = "deviceType"; + public static final String PRODUCT_NAME = "productName"; + public static final String HW_VERSION = "wifiHardwareVersion"; + public static final String SW_VERSION = "wifiSoftwareVersion"; + private static final String BINDING_ID = "govee"; + + // List of all Thing Type UIDs + public static final ThingTypeUID THING_TYPE_LIGHT = new ThingTypeUID(BINDING_ID, "govee-light"); + + // List of all Channel ids + public static final String CHANNEL_COLOR = "color"; + public static final String CHANNEL_COLOR_TEMPERATURE = "color-temperature"; + public static final String CHANNEL_COLOR_TEMPERATURE_ABS = "color-temperature-abs"; + + // Limit values of channels + public static final Double COLOR_TEMPERATURE_MIN_VALUE = 2000.0; + public static final Double COLOR_TEMPERATURE_MAX_VALUE = 9000.0; +} diff --git a/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/GoveeConfiguration.java b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/GoveeConfiguration.java new file mode 100644 index 00000000000..319cb573e25 --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/GoveeConfiguration.java @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.govee.internal; + +import org.eclipse.jdt.annotation.NonNullByDefault; + +/** + * The {@link GoveeConfiguration} contains thing values that are used by the Thing Handler + * + * @author Stefan Höhn - Initial contribution + */ +@NonNullByDefault +public class GoveeConfiguration { + + public String hostname = ""; + public int refreshInterval = 5; // in seconds +} diff --git a/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/GoveeDiscoveryService.java b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/GoveeDiscoveryService.java new file mode 100644 index 00000000000..03aaee0e98a --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/GoveeDiscoveryService.java @@ -0,0 +1,198 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ + +package org.openhab.binding.govee.internal; + +import java.io.IOException; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; +import java.util.Set; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.openhab.binding.govee.internal.model.DiscoveryData; +import org.openhab.binding.govee.internal.model.DiscoveryResponse; +import org.openhab.core.config.discovery.AbstractDiscoveryService; +import org.openhab.core.config.discovery.DiscoveryResult; +import org.openhab.core.config.discovery.DiscoveryResultBuilder; +import org.openhab.core.config.discovery.DiscoveryService; +import org.openhab.core.i18n.LocaleProvider; +import org.openhab.core.i18n.TranslationProvider; +import org.openhab.core.thing.ThingTypeUID; +import org.openhab.core.thing.ThingUID; +import org.osgi.framework.Bundle; +import org.osgi.framework.FrameworkUtil; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Discovers Govee devices + * + * Scan approach: + * 1. Determines all local network interfaces + * 2. Send a multicast message on each interface to the Govee multicast address 239.255.255.250 at port 4001 + * 3. Retrieve the list of devices + * + * Based on the description at https://app-h5.govee.com/user-manual/wlan-guide + * + * A typical scan response looks as follows + * + *
{@code
+ * {
+ *   "msg":{
+ *     "cmd":"scan",
+ *     "data":{
+ *       "ip":"192.168.1.23",
+ *       "device":"1F:80:C5:32:32:36:72:4E",
+ *       "sku":"Hxxxx",
+ *       "bleVersionHard":"3.01.01",
+ *       "bleVersionSoft":"1.03.01",
+ *       "wifiVersionHard":"1.00.10",
+ *       "wifiVersionSoft":"1.02.03"
+ *     }
+ *   }
+ * }
+ * }
+ * 
+ * + * Note that it uses the same port for receiving data like when receiving devices status updates. + * + * @see GoveeHandler + * + * @author Stefan Höhn - Initial Contribution + * @author Danny Baumann - Thread-Safe design refactoring + */ +@NonNullByDefault +@Component(service = DiscoveryService.class, immediate = true, configurationPid = "discovery.govee") +public class GoveeDiscoveryService extends AbstractDiscoveryService { + private final Logger logger = LoggerFactory.getLogger(GoveeDiscoveryService.class); + + private CommunicationManager communicationManager; + + private static final Set SUPPORTED_THING_TYPES_UIDS = Set.of(GoveeBindingConstants.THING_TYPE_LIGHT); + + @Activate + public GoveeDiscoveryService(@Reference TranslationProvider i18nProvider, @Reference LocaleProvider localeProvider, + @Reference CommunicationManager communicationManager) { + super(SUPPORTED_THING_TYPES_UIDS, 0, false); + this.i18nProvider = i18nProvider; + this.localeProvider = localeProvider; + this.communicationManager = communicationManager; + } + + // for test purposes only + public GoveeDiscoveryService(CommunicationManager communicationManager) { + super(SUPPORTED_THING_TYPES_UIDS, 0, false); + this.communicationManager = communicationManager; + } + + @Override + protected void startScan() { + logger.debug("starting Scan"); + + getLocalNetworkInterfaces().forEach(localNetworkInterface -> { + logger.debug("Discovering Govee devices on {} ...", localNetworkInterface); + try { + communicationManager.runDiscoveryForInterface(localNetworkInterface, response -> { + DiscoveryResult result = responseToResult(response); + if (result != null) { + thingDiscovered(result); + } + }); + logger.trace("After runDiscoveryForInterface"); + } catch (IOException e) { + logger.debug("Discovery with IO exception: {}", e.getMessage()); + } + logger.trace("After try"); + }); + } + + public @Nullable DiscoveryResult responseToResult(DiscoveryResponse response) { + final DiscoveryData data = response.msg().data(); + final String macAddress = data.device(); + if (macAddress.isEmpty()) { + logger.warn("Empty Mac address received during discovery - ignoring {}", response); + return null; + } + + final String ipAddress = data.ip(); + if (ipAddress.isEmpty()) { + logger.warn("Empty IP address received during discovery - ignoring {}", response); + return null; + } + + final String sku = data.sku(); + if (sku.isEmpty()) { + logger.warn("Empty SKU (product name) received during discovery - ignoring {}", response); + return null; + } + + final String productName; + if (i18nProvider != null) { + Bundle bundle = FrameworkUtil.getBundle(GoveeDiscoveryService.class); + productName = i18nProvider.getText(bundle, "discovery.govee-light." + sku, null, + localeProvider.getLocale()); + } else { + productName = sku; + } + String nameForLabel = productName != null ? productName + " " + sku : sku; + + ThingUID thingUid = new ThingUID(GoveeBindingConstants.THING_TYPE_LIGHT, macAddress.replace(":", "_")); + DiscoveryResultBuilder builder = DiscoveryResultBuilder.create(thingUid) + .withRepresentationProperty(GoveeBindingConstants.MAC_ADDRESS) + .withProperty(GoveeBindingConstants.MAC_ADDRESS, macAddress) + .withProperty(GoveeBindingConstants.IP_ADDRESS, ipAddress) + .withProperty(GoveeBindingConstants.DEVICE_TYPE, sku) + .withLabel(String.format("Govee %s (%s)", nameForLabel, ipAddress)); + + if (productName != null) { + builder.withProperty(GoveeBindingConstants.PRODUCT_NAME, productName); + } + + String hwVersion = data.wifiVersionHard(); + if (hwVersion != null) { + builder.withProperty(GoveeBindingConstants.HW_VERSION, hwVersion); + } + String swVersion = data.wifiVersionSoft(); + if (swVersion != null) { + builder.withProperty(GoveeBindingConstants.SW_VERSION, swVersion); + } + + return builder.build(); + } + + private List getLocalNetworkInterfaces() { + List result = new LinkedList<>(); + try { + for (NetworkInterface networkInterface : Collections.list(NetworkInterface.getNetworkInterfaces())) { + try { + if (networkInterface.isUp() && !networkInterface.isLoopback() + && !networkInterface.isPointToPoint()) { + result.add(networkInterface); + } + } catch (SocketException exception) { + // ignore + } + } + } catch (SocketException exception) { + return List.of(); + } + return result; + } +} diff --git a/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/GoveeHandler.java b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/GoveeHandler.java new file mode 100644 index 00000000000..1694541cad2 --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/GoveeHandler.java @@ -0,0 +1,329 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.govee.internal; + +import static org.openhab.binding.govee.internal.GoveeBindingConstants.*; + +import java.io.IOException; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.openhab.binding.govee.internal.model.Color; +import org.openhab.binding.govee.internal.model.ColorData; +import org.openhab.binding.govee.internal.model.EmptyValueQueryStatusData; +import org.openhab.binding.govee.internal.model.GenericGoveeMsg; +import org.openhab.binding.govee.internal.model.GenericGoveeRequest; +import org.openhab.binding.govee.internal.model.StatusResponse; +import org.openhab.binding.govee.internal.model.ValueIntData; +import org.openhab.core.library.types.HSBType; +import org.openhab.core.library.types.OnOffType; +import org.openhab.core.library.types.PercentType; +import org.openhab.core.library.types.QuantityType; +import org.openhab.core.library.unit.Units; +import org.openhab.core.thing.ChannelUID; +import org.openhab.core.thing.Thing; +import org.openhab.core.thing.ThingStatus; +import org.openhab.core.thing.ThingStatusDetail; +import org.openhab.core.thing.binding.BaseThingHandler; +import org.openhab.core.types.Command; +import org.openhab.core.types.RefreshType; +import org.openhab.core.util.ColorUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.gson.Gson; +import com.google.gson.JsonSyntaxException; + +/** + * The {@link GoveeHandler} is responsible for handling commands, which are + * sent to one of the channels. + * + * Any device has its own job that triggers a refresh of retrieving the external state from the device. + * However, there must be only one job that listens for all devices in a singleton thread because + * all devices send their udp packet response to the same port on openHAB. Based on the sender IP address + * of the device we can detect to which thing the status answer needs to be assigned to and updated. + * + *
    + *
  • The job per thing that triggers a new update is called triggerStatusJob. There are as many instances + * as things.
  • + *
  • The job that receives the answers and applies that to the respective thing is called refreshStatusJob and + * there is only one for all instances. It may be stopped and restarted by the DiscoveryService (see below).
  • + *
+ * + * The other topic that needs to be managed is that device discovery responses are also sent to openHAB at the same port + * as status updates. Therefore, when scanning new devices that job that listens to status devices must + * be stopped while scanning new devices. Otherwise, the status job will receive the scan discover UDB packages. + * + * Controlling the lights is done via the Govee LAN API (cloud is not supported): + * https://app-h5.govee.com/user-manual/wlan-guide + * + * @author Stefan Höhn - Initial contribution + */ +@NonNullByDefault +public class GoveeHandler extends BaseThingHandler { + + /* + * Messages to be sent to the Govee devices + */ + private static final Gson GSON = new Gson(); + + private final Logger logger = LoggerFactory.getLogger(GoveeHandler.class); + + @Nullable + private ScheduledFuture triggerStatusJob; // send device status update job + private GoveeConfiguration goveeConfiguration = new GoveeConfiguration(); + + private CommunicationManager communicationManager; + + private int lastOnOff; + private int lastBrightness; + private HSBType lastColor = new HSBType(); + private int lastColorTempInKelvin = COLOR_TEMPERATURE_MIN_VALUE.intValue(); + + /** + * This thing related job thingRefreshSender triggers an update to the Govee device. + * The device sends it back to the common port and the response is + * then received by the common #refreshStatusReceiver + */ + private final Runnable thingRefreshSender = () -> { + try { + triggerDeviceStatusRefresh(); + if (!thing.getStatus().equals(ThingStatus.ONLINE)) { + updateStatus(ThingStatus.ONLINE); + } + } catch (IOException e) { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, + "@text/offline.communication-error.could-not-query-device [\"" + goveeConfiguration.hostname + + "\"]"); + } + }; + + public GoveeHandler(Thing thing, CommunicationManager communicationManager) { + super(thing); + this.communicationManager = communicationManager; + } + + public String getHostname() { + return goveeConfiguration.hostname; + } + + @Override + public void initialize() { + goveeConfiguration = getConfigAs(GoveeConfiguration.class); + + final String ipAddress = goveeConfiguration.hostname; + if (ipAddress.isEmpty()) { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, + "@text/offline.configuration-error.ip-address.missing"); + return; + } + updateStatus(ThingStatus.UNKNOWN); + communicationManager.registerHandler(this); + if (triggerStatusJob == null) { + logger.debug("Starting refresh trigger job for thing {} ", thing.getLabel()); + + triggerStatusJob = scheduler.scheduleWithFixedDelay(thingRefreshSender, 100, + goveeConfiguration.refreshInterval * 1000L, TimeUnit.MILLISECONDS); + } + } + + @Override + public void dispose() { + super.dispose(); + + ScheduledFuture triggerStatusJobFuture = triggerStatusJob; + if (triggerStatusJobFuture != null) { + triggerStatusJobFuture.cancel(true); + triggerStatusJob = null; + } + communicationManager.unregisterHandler(this); + } + + @Override + public void handleCommand(ChannelUID channelUID, Command command) { + try { + if (command instanceof RefreshType) { + // we are refreshing all channels at once, as we get all information at the same time + triggerDeviceStatusRefresh(); + logger.debug("Triggering Refresh"); + } else { + logger.debug("Channel ID {} type {}", channelUID.getId(), command.getClass()); + switch (channelUID.getId()) { + case CHANNEL_COLOR: + if (command instanceof HSBType hsbCommand) { + int[] rgb = ColorUtil.hsbToRgb(hsbCommand); + sendColor(new Color(rgb[0], rgb[1], rgb[2])); + } else if (command instanceof PercentType percent) { + sendBrightness(percent.intValue()); + } else if (command instanceof OnOffType onOffCommand) { + sendOnOff(onOffCommand); + } + break; + case CHANNEL_COLOR_TEMPERATURE: + if (command instanceof PercentType percent) { + logger.debug("COLOR_TEMPERATURE: Color Temperature change with Percent Type {}", command); + Double colorTemp = (COLOR_TEMPERATURE_MIN_VALUE + percent.intValue() + * (COLOR_TEMPERATURE_MAX_VALUE - COLOR_TEMPERATURE_MIN_VALUE) / 100.0); + lastColorTempInKelvin = colorTemp.intValue(); + logger.debug("lastColorTempInKelvin {}", lastColorTempInKelvin); + sendColorTemp(lastColorTempInKelvin); + } + break; + case CHANNEL_COLOR_TEMPERATURE_ABS: + if (command instanceof QuantityType quantity) { + logger.debug("Color Temperature Absolute change with Percent Type {}", command); + lastColorTempInKelvin = quantity.intValue(); + logger.debug("COLOR_TEMPERATURE_ABS: lastColorTempInKelvin {}", lastColorTempInKelvin); + int lastColorTempInPercent = ((Double) ((lastColorTempInKelvin + - COLOR_TEMPERATURE_MIN_VALUE) + / (COLOR_TEMPERATURE_MAX_VALUE - COLOR_TEMPERATURE_MIN_VALUE) * 100.0)).intValue(); + logger.debug("computed lastColorTempInPercent {}", lastColorTempInPercent); + sendColorTemp(lastColorTempInKelvin); + } + break; + } + } + if (!thing.getStatus().equals(ThingStatus.ONLINE)) { + updateStatus(ThingStatus.ONLINE); + } + } catch (IOException e) { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, + "@text/offline.communication-error.could-not-query-device [\"" + goveeConfiguration.hostname + + "\"]"); + } + } + + /** + * Initiate a refresh to our thing devicee + * + */ + private void triggerDeviceStatusRefresh() throws IOException { + logger.debug("trigger Refresh Status of device {}", thing.getLabel()); + GenericGoveeRequest lightQuery = new GenericGoveeRequest( + new GenericGoveeMsg("devStatus", new EmptyValueQueryStatusData())); + communicationManager.sendRequest(this, lightQuery); + } + + public void sendColor(Color color) throws IOException { + lastColor = ColorUtil.rgbToHsb(new int[] { color.r(), color.g(), color.b() }); + + GenericGoveeRequest lightColor = new GenericGoveeRequest( + new GenericGoveeMsg("colorwc", new ColorData(color, 0))); + communicationManager.sendRequest(this, lightColor); + } + + public void sendBrightness(int brightness) throws IOException { + lastBrightness = brightness; + GenericGoveeRequest lightBrightness = new GenericGoveeRequest( + new GenericGoveeMsg("brightness", new ValueIntData(brightness))); + communicationManager.sendRequest(this, lightBrightness); + } + + private void sendOnOff(OnOffType switchValue) throws IOException { + lastOnOff = (switchValue == OnOffType.ON) ? 1 : 0; + GenericGoveeRequest switchLight = new GenericGoveeRequest( + new GenericGoveeMsg("turn", new ValueIntData(lastOnOff))); + communicationManager.sendRequest(this, switchLight); + } + + private void sendColorTemp(int colorTemp) throws IOException { + lastColorTempInKelvin = colorTemp; + logger.debug("sendColorTemp {}", colorTemp); + GenericGoveeRequest lightColor = new GenericGoveeRequest( + new GenericGoveeMsg("colorwc", new ColorData(new Color(0, 0, 0), colorTemp))); + communicationManager.sendRequest(this, lightColor); + } + + /** + * Creates a Color state by using the last color information from lastColor + * The brightness is overwritten either by the provided lastBrightness + * or if lastOnOff = 0 (off) then the brightness is set 0 + * + * @see #lastColor + * @see #lastBrightness + * @see #lastOnOff + * + * @return the computed state + */ + private HSBType getColorState(Color color, int brightness) { + PercentType computedBrightness = lastOnOff == 0 ? new PercentType(0) : new PercentType(brightness); + int[] rgb = { color.r(), color.g(), color.b() }; + HSBType hsb = ColorUtil.rgbToHsb(rgb); + return new HSBType(hsb.getHue(), hsb.getSaturation(), computedBrightness); + } + + void handleIncomingStatus(String response) { + if (response.isEmpty()) { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, + "@text/offline.communication-error.empty-response"); + return; + } + + try { + StatusResponse statusMessage = GSON.fromJson(response, StatusResponse.class); + if (statusMessage != null) { + updateDeviceState(statusMessage); + } + updateStatus(ThingStatus.ONLINE); + } catch (JsonSyntaxException jse) { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, jse.getMessage()); + } + } + + public void updateDeviceState(@Nullable StatusResponse message) { + if (message == null) { + return; + } + + logger.trace("Receiving Device State"); + int newOnOff = message.msg().data().onOff(); + logger.trace("newOnOff = {}", newOnOff); + int newBrightness = message.msg().data().brightness(); + logger.trace("newBrightness = {}", newBrightness); + Color newColor = message.msg().data().color(); + logger.trace("newColor = {}", newColor); + int newColorTempInKelvin = message.msg().data().colorTemInKelvin(); + logger.trace("newColorTempInKelvin = {}", newColorTempInKelvin); + + newColorTempInKelvin = (newColorTempInKelvin < COLOR_TEMPERATURE_MIN_VALUE) + ? COLOR_TEMPERATURE_MIN_VALUE.intValue() + : newColorTempInKelvin; + int newColorTempInPercent = ((Double) ((newColorTempInKelvin - COLOR_TEMPERATURE_MIN_VALUE) + / (COLOR_TEMPERATURE_MAX_VALUE - COLOR_TEMPERATURE_MIN_VALUE) * 100.0)).intValue(); + + HSBType adaptedColor = getColorState(newColor, newBrightness); + + logger.trace("HSB old: {} vs adaptedColor: {}", lastColor, adaptedColor); + // avoid noise by only updating if the value has changed on the device + if (!adaptedColor.equals(lastColor)) { + logger.trace("UPDATING HSB old: {} != {}", lastColor, adaptedColor); + updateState(CHANNEL_COLOR, adaptedColor); + } + + // avoid noise by only updating if the value has changed on the device + logger.trace("Color-Temperature Status: old: {} K {}% vs new: {} K", lastColorTempInKelvin, + newColorTempInPercent, newColorTempInKelvin); + if (newColorTempInKelvin != lastColorTempInKelvin) { + logger.trace("Color-Temperature Status: old: {} K {}% vs new: {} K", lastColorTempInKelvin, + newColorTempInPercent, newColorTempInKelvin); + updateState(CHANNEL_COLOR_TEMPERATURE_ABS, new QuantityType<>(lastColorTempInKelvin, Units.KELVIN)); + updateState(CHANNEL_COLOR_TEMPERATURE, new PercentType(newColorTempInPercent)); + } + + lastOnOff = newOnOff; + lastColor = adaptedColor; + lastBrightness = newBrightness; + } +} diff --git a/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/GoveeHandlerFactory.java b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/GoveeHandlerFactory.java new file mode 100644 index 00000000000..120610fc95b --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/GoveeHandlerFactory.java @@ -0,0 +1,63 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.govee.internal; + +import static org.openhab.binding.govee.internal.GoveeBindingConstants.THING_TYPE_LIGHT; + +import java.util.Set; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.openhab.core.thing.Thing; +import org.openhab.core.thing.ThingTypeUID; +import org.openhab.core.thing.binding.BaseThingHandlerFactory; +import org.openhab.core.thing.binding.ThingHandler; +import org.openhab.core.thing.binding.ThingHandlerFactory; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; + +/** + * The {@link GoveeHandlerFactory} is responsible for creating things and thing + * handlers. + * + * @author Stefan Höhn - Initial contribution + */ +@NonNullByDefault +@Component(configurationPid = "binding.govee", service = ThingHandlerFactory.class) +public class GoveeHandlerFactory extends BaseThingHandlerFactory { + private static final Set SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_LIGHT); + + private CommunicationManager communicationManager; + + @Activate + public GoveeHandlerFactory(@Reference CommunicationManager communicationManager) { + this.communicationManager = communicationManager; + } + + @Override + public boolean supportsThingType(ThingTypeUID thingTypeUID) { + return SUPPORTED_THING_TYPES_UIDS.contains(thingTypeUID); + } + + @Override + protected @Nullable ThingHandler createHandler(Thing thing) { + ThingTypeUID thingTypeUID = thing.getThingTypeUID(); + + if (THING_TYPE_LIGHT.equals(thingTypeUID)) { + return new GoveeHandler(thing, communicationManager); + } + + return null; + } +} diff --git a/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/Color.java b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/Color.java new file mode 100644 index 00000000000..88c8dd4bbe6 --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/Color.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + * + */ +package org.openhab.binding.govee.internal.model; + +/** + * + * @param r red + * @param g green + * @param b blue + * + * @author Stefan Höhn - Initial contribution + */ +public record Color(int r, int g, int b) { +} diff --git a/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/ColorData.java b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/ColorData.java new file mode 100644 index 00000000000..c46fded8ab7 --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/ColorData.java @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + * + */ +package org.openhab.binding.govee.internal.model; + +import org.eclipse.jdt.annotation.NonNullByDefault; + +/** + * Color Data + * + * @param color + * @param colorTemInKelvin + * + * @author Stefan Höhn - Initial contribution + */ +@NonNullByDefault +public record ColorData(Color color, int colorTemInKelvin) implements GenericGoveeData { +} diff --git a/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/DiscoveryData.java b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/DiscoveryData.java new file mode 100644 index 00000000000..24d0411dfa4 --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/DiscoveryData.java @@ -0,0 +1,37 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + * + */ +package org.openhab.binding.govee.internal.model; + +import org.eclipse.jdt.annotation.NonNullByDefault; + +/** + * Govee Message - Device information + * + * @param ip IP address of the device + * @param device mac Address + * @param sku article number + * @param bleVersionHard Bluetooth HW version + * @param bleVersionSoft Bluetooth SW version + * @param wifiVersionHard Wifi HW version + * @param wifiVersionSoft Wife SW version + * + * @author Stefan Höhn - Initial contribution + */ +@NonNullByDefault +public record DiscoveryData(String ip, String device, String sku, String bleVersionHard, String bleVersionSoft, + String wifiVersionHard, String wifiVersionSoft) { + public DiscoveryData() { + this("", "", "", "", "", "", ""); + } +} diff --git a/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/DiscoveryMsg.java b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/DiscoveryMsg.java new file mode 100644 index 00000000000..f5bf218a493 --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/DiscoveryMsg.java @@ -0,0 +1,31 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + * + */ +package org.openhab.binding.govee.internal.model; + +import org.eclipse.jdt.annotation.NonNullByDefault; + +/** + * Govee Message + * + * @param cmd + * @param data + * + * @author Stefan Höhn - Initial contribution + */ +@NonNullByDefault +public record DiscoveryMsg(String cmd, DiscoveryData data) { + public DiscoveryMsg() { + this("", new DiscoveryData()); + } +} diff --git a/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/DiscoveryResponse.java b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/DiscoveryResponse.java new file mode 100644 index 00000000000..a1b7ae5b8ce --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/DiscoveryResponse.java @@ -0,0 +1,30 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + * + */ +package org.openhab.binding.govee.internal.model; + +import org.eclipse.jdt.annotation.NonNullByDefault; + +/** + * Govee Message + * + * @param msg message block + * + * @author Stefan Höhn - Initial contribution + */ +@NonNullByDefault +public record DiscoveryResponse(DiscoveryMsg msg) { + public DiscoveryResponse() { + this(new DiscoveryMsg()); + } +} diff --git a/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/EmptyValueQueryStatusData.java b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/EmptyValueQueryStatusData.java new file mode 100644 index 00000000000..e04b4a0c174 --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/EmptyValueQueryStatusData.java @@ -0,0 +1,26 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + * + */ +package org.openhab.binding.govee.internal.model; + +import org.eclipse.jdt.annotation.NonNullByDefault; + +/** + * Empty Govee Value Data + * Used to query device data + * + * @author Stefan Höhn - Initial contribution + */ +@NonNullByDefault +public record EmptyValueQueryStatusData() implements GenericGoveeData { +} diff --git a/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/GenericGoveeData.java b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/GenericGoveeData.java new file mode 100644 index 00000000000..bd8f6af1658 --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/GenericGoveeData.java @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + * + */ +package org.openhab.binding.govee.internal.model; + +import org.eclipse.jdt.annotation.NonNullByDefault; + +/** + * Govee Data Interface + * + * can hold different type of data content + * + * @author Stefan Höhn - Initial contribution + */ +@NonNullByDefault +public interface GenericGoveeData { +} diff --git a/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/GenericGoveeMsg.java b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/GenericGoveeMsg.java new file mode 100644 index 00000000000..89a5b31d583 --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/GenericGoveeMsg.java @@ -0,0 +1,30 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + * + */ +package org.openhab.binding.govee.internal.model; + +import org.eclipse.jdt.annotation.NonNullByDefault; + +/** + * Generic Govee Data + * + * can hold different types of data with the command + * + * @param cmd + * @param data + * + * @author Stefan Höhn - Initial contribution + */ +@NonNullByDefault +public record GenericGoveeMsg(String cmd, GenericGoveeData data) { +} diff --git a/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/GenericGoveeRequest.java b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/GenericGoveeRequest.java new file mode 100644 index 00000000000..f8bb47b945f --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/GenericGoveeRequest.java @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + * + */ +package org.openhab.binding.govee.internal.model; + +import org.eclipse.jdt.annotation.NonNullByDefault; + +/** + * Govee Message + * + * @param msg message block + * + * @author Stefan Höhn - Initial contribution + */ +@NonNullByDefault +public record GenericGoveeRequest(GenericGoveeMsg msg) { +} diff --git a/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/StatusData.java b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/StatusData.java new file mode 100644 index 00000000000..33941a2e6b3 --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/StatusData.java @@ -0,0 +1,26 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + * + */ +package org.openhab.binding.govee.internal.model; + +/** + * + * @param onOff on=1 off=0 + * @param brightness brightness + * @param color rgb color + * @param colorTemInKelvin color temperature in Kelvin + * + * @author Stefan Höhn - Initial contribution + */ +public record StatusData(int onOff, int brightness, Color color, int colorTemInKelvin) { +} diff --git a/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/StatusMsg.java b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/StatusMsg.java new file mode 100644 index 00000000000..8beb13388ee --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/StatusMsg.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + * + */ +package org.openhab.binding.govee.internal.model; + +/** + * Govee Message - Cmd + * + * @param cmd Query Command + * @param data Status data + * + * @author Stefan Höhn - Initial contribution + */ +public record StatusMsg(String cmd, StatusData data) { +} diff --git a/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/StatusResponse.java b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/StatusResponse.java new file mode 100644 index 00000000000..19286ec5033 --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/StatusResponse.java @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + * + */ +package org.openhab.binding.govee.internal.model; + +/** + * Govee Message + * + * @param msg message block + * + * @author Stefan Höhn - Initial contribution + */ +public record StatusResponse(StatusMsg msg) { +} diff --git a/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/ValueIntData.java b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/ValueIntData.java new file mode 100644 index 00000000000..81dcf25ef91 --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/ValueIntData.java @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + * + */ +package org.openhab.binding.govee.internal.model; + +import org.eclipse.jdt.annotation.NonNullByDefault; + +/** + * Simple Govee Value Data + * typically used for On / Off + * + * @param value + * + * @author Stefan Höhn - Initial contribution + */ +@NonNullByDefault +public record ValueIntData(int value) implements GenericGoveeData { +} diff --git a/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/ValueStringData.java b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/ValueStringData.java new file mode 100644 index 00000000000..08ca5a019fc --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/java/org/openhab/binding/govee/internal/model/ValueStringData.java @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + * + */ +package org.openhab.binding.govee.internal.model; + +import org.eclipse.jdt.annotation.NonNullByDefault; + +/** + * Simple Govee Value Data + * typically used for On / Off + * + * @param value + * + * @author Stefan Höhn - Initial contribution + */ +@NonNullByDefault +public record ValueStringData(String value) implements GenericGoveeData { +} diff --git a/bundles/org.openhab.binding.govee/src/main/resources/OH-INF/addon/addon.xml b/bundles/org.openhab.binding.govee/src/main/resources/OH-INF/addon/addon.xml new file mode 100644 index 00000000000..111e51af14d --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/resources/OH-INF/addon/addon.xml @@ -0,0 +1,10 @@ + + + + binding + Govee Lan-API Binding + This is the binding for handling Govee Lights via the LAN-API interface. + local + diff --git a/bundles/org.openhab.binding.govee/src/main/resources/OH-INF/config/config.xml b/bundles/org.openhab.binding.govee/src/main/resources/OH-INF/config/config.xml new file mode 100644 index 00000000000..e153efa4d80 --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/resources/OH-INF/config/config.xml @@ -0,0 +1,24 @@ + + + + + + network-address + + Hostname or IP address of the device + + + + MAC Address of the device + + + + The amount of time that passes until the device is refreshed (in seconds) + 2 + + + + diff --git a/bundles/org.openhab.binding.govee/src/main/resources/OH-INF/i18n/govee.properties b/bundles/org.openhab.binding.govee/src/main/resources/OH-INF/i18n/govee.properties new file mode 100644 index 00000000000..b600839cb40 --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/resources/OH-INF/i18n/govee.properties @@ -0,0 +1,80 @@ +# add-on + +addon.name = Govee Binding +addon.description = This is the binding for handling Govee Lights via the LAN-API interface. + +# thing types + +thing-type.govee-light.label = Govee Light Thing +thing-type.govee-light.description = Govee Light controllable via LAN API + +# thing types config + +thing-type.config.govee-light.refreshInterval.label = Light refresh interval (sec) +thing-type.config.govee-light.refreshInterval.description = The amount of time that passes until the device is refreshed + +# product names + +discovery.govee-light.H619Z = H619Z RGBIC Pro LED Strip Lights +discovery.govee-light.H6046 = H6046 RGBIC TV Light Bars +discovery.govee-light.H6047 = H6047 RGBIC Gaming Light Bars with Smart Controller +discovery.govee-light.H6061 = H6061 Glide Hexa LED Panels +discovery.govee-light.H6062 = H6062 Glide Wall Light +discovery.govee-light.H6065 = H6065 Glide RGBIC Y Lights +discovery.govee-light.H6066 = H6066 Glide Hexa Pro LED Panel +discovery.govee-light.H6067 = H6067 Glide Triangle Light Panels +discovery.govee-light.H6072 = H6072 RGBICWW Corner Floor Lamp +discovery.govee-light.H6076 = H6076 RGBICW Smart Corner Floor Lamp +discovery.govee-light.H6073 = H6073 LED Floor Lamp +discovery.govee-light.H6078 = H6078 Cylinder Floor Lamp +discovery.govee-light.H6087 = H6087 RGBIC Smart Wall Sconces +discovery.govee-light.H6173 = H6173 RGBIC Outdoor Strip Lights +discovery.govee-light.H619A = H619A RGBIC Strip Lights With Protective Coating 5M +discovery.govee-light.H619B = H619B RGBIC LED Strip Lights With Protective Coating +discovery.govee-light.H619C = H619C LED Strip Lights With Protective Coating +discovery.govee-light.H619D = H619D RGBIC PRO LED Strip Lights +discovery.govee-light.H619E = H619E RGBIC LED Strip Lights With Protective Coating +discovery.govee-light.H61A0 = H61A0 RGBIC Neon Rope Light 1M +discovery.govee-light.H61A1 = H61A1 RGBIC Neon Rope Light 2M +discovery.govee-light.H61A2 = H61A2 RGBIC Neon Rope Light 5M +discovery.govee-light.H61A3 = H61A3 RGBIC Neon Rope Light +discovery.govee-light.H61A5 = H61A5 Neon LED Strip Light 10 +discovery.govee-light.H61A8 = H61A8Neon Neon Rope Light 10 +discovery.govee-light.H618A = H618A RGBIC Basic LED Strip Lights 5M +discovery.govee-light.H618C = H618C RGBIC Basic LED Strip Lights 5M +discovery.govee-light.H6117 = H6117 Dream Color LED Strip Light 10M +discovery.govee-light.H6159 = H6159 RGB Light Strip +discovery.govee-light.H615E = H615E LED Strip Lights 30M +discovery.govee-light.H6163 = H6163 Dreamcolor LED Strip Light 5M +discovery.govee-light.H610A = H610A Glide Lively Wall Lights +discovery.govee-light.H610B = H610B Music Wall Lights +discovery.govee-light.H6172 = H6172 Outdoor LED Strip 10m +discovery.govee-light.H61B2 = H61B2 RGBIC Neon TV Backlight +discovery.govee-light.H61E1 = H61E1 LED Strip Light M1 +discovery.govee-light.H7012 = H7012 Warm White Outdoor String Lights +discovery.govee-light.H7013 = H7013 Warm White Outdoor String Lights +discovery.govee-light.H7021 = H7021 RGBIC Warm White Smart Outdoor String +discovery.govee-light.H7028 = H7028 Lynx Dream LED-Bulb String +discovery.govee-light.H7041 = H7041 LED Outdoor Bulb String Lights +discovery.govee-light.H7042 = H7042 LED Outdoor Bulb String Lights +discovery.govee-light.H705A = H705A Permanent Outdoor Lights 30M +discovery.govee-light.H705B = H705B Permanent Outdoor Lights 15M +discovery.govee-light.H7050 = H7050 Outdoor Ground Lights 11M +discovery.govee-light.H7051 = H7051 Outdoor Ground Lights 15M +discovery.govee-light.H7055 = H7055 Pathway Light +discovery.govee-light.H7060 = H7060 LED Flood Lights (2-Pack) +discovery.govee-light.H7061 = H7061 LED Flood Lights (4-Pack) +discovery.govee-light.H7062 = H7062 LED Flood Lights (6-Pack) +discovery.govee-light.H7065 = H7065 Outdoor Spot Lights +discovery.govee-light.H6051 = H6051 Aura - Smart Table Lamp +discovery.govee-light.H6056 = H6056 H6056 Flow Plus +discovery.govee-light.H6059 = H6059 RGBWW Night Light for Kids +discovery.govee-light.H618F = H618F RGBIC LED Strip Lights +discovery.govee-light.H618E = H618E LED Strip Lights 22m +discovery.govee-light.H6168 = H6168 TV LED Backlight + +# thing status descriptions + +offline.communication-error.could-not-query-device = Could not control/query device at IP address {0} +offline.configuration-error.ip-address.missing = IP address is missing +offline.communication-error.empty-response = Empty response received diff --git a/bundles/org.openhab.binding.govee/src/main/resources/OH-INF/thing/thing-types.xml b/bundles/org.openhab.binding.govee/src/main/resources/OH-INF/thing/thing-types.xml new file mode 100644 index 00000000000..002cb291f70 --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/main/resources/OH-INF/thing/thing-types.xml @@ -0,0 +1,32 @@ + + + + + + Govee light controllable via LAN API + + + + + + + + + + + Number:Temperature + + Controls the color temperature of the light in Kelvin + Temperature + + Control + ColorTemperature + + + + + + diff --git a/bundles/org.openhab.binding.govee/src/test/java/org/openhab/binding/govee/internal/GoveeDiscoveryTest.java b/bundles/org.openhab.binding.govee/src/test/java/org/openhab/binding/govee/internal/GoveeDiscoveryTest.java new file mode 100644 index 00000000000..01c73d6e3c7 --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/test/java/org/openhab/binding/govee/internal/GoveeDiscoveryTest.java @@ -0,0 +1,64 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.govee.internal; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.Map; +import java.util.Objects; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.junit.jupiter.api.Test; +import org.openhab.binding.govee.internal.model.DiscoveryResponse; +import org.openhab.core.config.discovery.DiscoveryResult; + +import com.google.gson.Gson; + +/** + * @author Stefan Höhn - Initial contribution + */ +@NonNullByDefault +public class GoveeDiscoveryTest { + + String response = """ + { + "msg":{ + "cmd":"scan", + "data":{ + "ip":"192.168.178.171", + "device":"7D:31:C3:35:33:33:44:15", + "sku":"H6076", + "bleVersionHard":"3.01.01", + "bleVersionSoft":"1.04.04", + "wifiVersionHard":"1.00.10", + "wifiVersionSoft":"1.02.11" + } + } + } + """; + + @Test + public void testProcessScanMessage() { + GoveeDiscoveryService service = new GoveeDiscoveryService(new CommunicationManager()); + DiscoveryResponse resp = new Gson().fromJson(response, DiscoveryResponse.class); + Objects.requireNonNull(resp); + @Nullable + DiscoveryResult result = service.responseToResult(resp); + assertNotNull(result); + Map deviceProperties = result.getProperties(); + assertEquals(deviceProperties.get(GoveeBindingConstants.DEVICE_TYPE), "H6076"); + assertEquals(deviceProperties.get(GoveeBindingConstants.IP_ADDRESS), "192.168.178.171"); + assertEquals(deviceProperties.get(GoveeBindingConstants.MAC_ADDRESS), "7D:31:C3:35:33:33:44:15"); + } +} diff --git a/bundles/org.openhab.binding.govee/src/test/java/org/openhab/binding/govee/internal/GoveeSerializeTest.java b/bundles/org.openhab.binding.govee/src/test/java/org/openhab/binding/govee/internal/GoveeSerializeTest.java new file mode 100644 index 00000000000..1aededf83e7 --- /dev/null +++ b/bundles/org.openhab.binding.govee/src/test/java/org/openhab/binding/govee/internal/GoveeSerializeTest.java @@ -0,0 +1,57 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.govee.internal; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.junit.jupiter.api.Test; +import org.openhab.binding.govee.internal.model.Color; +import org.openhab.binding.govee.internal.model.ColorData; +import org.openhab.binding.govee.internal.model.EmptyValueQueryStatusData; +import org.openhab.binding.govee.internal.model.GenericGoveeMsg; +import org.openhab.binding.govee.internal.model.GenericGoveeRequest; +import org.openhab.binding.govee.internal.model.ValueIntData; + +import com.google.gson.Gson; + +/** + * @author Stefan Höhn - Initial contribution + */ +@NonNullByDefault +public class GoveeSerializeTest { + + private static final Gson GSON = new Gson(); + private final String lightOffJsonString = "{\"msg\":{\"cmd\":\"turn\",\"data\":{\"value\":0}}}"; + private final String lightOnJsonString = "{\"msg\":{\"cmd\":\"brightness\",\"data\":{\"value\":100}}}"; + private final String lightColorJsonString = "{\"msg\":{\"cmd\":\"colorwc\",\"data\":{\"color\":{\"r\":0,\"g\":1,\"b\":2},\"colorTemInKelvin\":3}}}"; + private final String lightBrightnessJsonString = "{\"msg\":{\"cmd\":\"brightness\",\"data\":{\"value\":99}}}"; + private final String lightQueryJsonString = "{\"msg\":{\"cmd\":\"devStatus\",\"data\":{}}}"; + + @Test + public void testSerializeMessage() { + GenericGoveeRequest lightOff = new GenericGoveeRequest(new GenericGoveeMsg("turn", new ValueIntData(0))); + assertEquals(lightOffJsonString, GSON.toJson(lightOff)); + GenericGoveeRequest lightOn = new GenericGoveeRequest(new GenericGoveeMsg("brightness", new ValueIntData(100))); + assertEquals(lightOnJsonString, GSON.toJson(lightOn)); + GenericGoveeRequest lightColor = new GenericGoveeRequest( + new GenericGoveeMsg("colorwc", new ColorData(new Color(0, 1, 2), 3))); + assertEquals(lightColorJsonString, GSON.toJson(lightColor)); + GenericGoveeRequest lightBrightness = new GenericGoveeRequest( + new GenericGoveeMsg("brightness", new ValueIntData(99))); + assertEquals(lightBrightnessJsonString, GSON.toJson(lightBrightness)); + GenericGoveeRequest lightQuery = new GenericGoveeRequest( + new GenericGoveeMsg("devStatus", new EmptyValueQueryStatusData())); + assertEquals(lightQueryJsonString, GSON.toJson(lightQuery)); + } +} diff --git a/bundles/pom.xml b/bundles/pom.xml index 9d53ead3623..a22c836ac6e 100644 --- a/bundles/pom.xml +++ b/bundles/pom.xml @@ -154,6 +154,7 @@ org.openhab.binding.gce org.openhab.binding.generacmobilelink org.openhab.binding.goecharger + org.openhab.binding.govee org.openhab.binding.gpio org.openhab.binding.globalcache org.openhab.binding.gpstracker