# Govee Geräte via UDP Lan API steuern

**URL:** <https://community.symcon.de/t/govee-geraete-via-udp-lan-api-steuern/135590>\
**Category:** Skripte, PHP, SQL (Fragen)\
**Created:** [2. Dezember 2023 um 12:05 UTC](https://community.symcon.de/t/govee-geraete-via-udp-lan-api-steuern/135590 "2023-12-02T12:05:58Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![kallii](https://community.symcon.de/letter_avatar_proxy/v4/letter/k/edb3f5/32.png) [@kallii](https://community.symcon.de/u/kallii)\
**Post date:** [2. Dezember 2023 um 12:05 UTC](https://community.symcon.de/t/govee-geraete-via-udp-lan-api-steuern/135590/1 "2023-12-02T12:05:58Z")

</div>

Hallo, ich bin gerade dabei die LAN API in Symcon so umzusetzen, dass ich die JSON Befehle eben an die Geräte senden kann. Ich stehe nun vor der Herausforderung wie ich diese dann auch steuerbar machen kann… ich hab mir nu mal eine Instanz „Json Values“ angelegt und mal ein paar Befehle hinterlegt. Dann müsste ich diese Instanz wohl mit einem UDP Socket verbinden ich bin mir da mit den Settings nur nicht so ganz klar. Auf Port 4002 soll ich einen UDP Socket am IPS Server erstellen und dann am Port 4003 wiederum nach Antworten lauschen, welche dann ja wiederum in die JSON Values übergeben werden müssten.

 ![image](https://community.symcon.de/uploads/default/original/3X/3/f/3f1eef909d477e991746329aee642bbb0c67b073.png)

Um dann diesen Befehl irgendwie absetzen zu können → (Doku Govee)

 ![image](https://community.symcon.de/uploads/default/original/3X/2/e/2e99d36a46a48f97556b6948d5e18087460cb2b4.png)

Dann müsste ich ja noch einen Scan Befehl an eine Multicast Adresse senden… bin mir irgendwie nicht ganz sicher ab wann man dann nun die Client IP nutzt und wann die Multicast? Uff 😃

 ![image](https://community.symcon.de/uploads/default/original/3X/5/d/5d6d40844b0d0e71c9e73b524822ded1f08172fe.png)

Muss das dann via dem Multicast Socket laufen?

 ![image](https://community.symcon.de/uploads/default/original/3X/b/6/b64f24bba229867423f60253491296b254758eff.png)

Habt ihr eine Idee?

---

<div class="post-metadata">

**Author:** ![DeejayT](https://community.symcon.de/letter_avatar_proxy/v4/letter/d/db5fbb/32.png) [@DeejayT](https://community.symcon.de/u/DeejayT)\
**Post date:** [13. Dezember 2023 um 18:07 UTC](https://community.symcon.de/t/govee-geraete-via-udp-lan-api-steuern/135590/2 "2023-12-13T18:07:03Z")

</div>

Bist du schon weiter? Auf meinem Einkaufszettel stehen ein paar Govee Lampen.

---

<div class="post-metadata">

**Author:** ![kallii](https://community.symcon.de/letter_avatar_proxy/v4/letter/k/edb3f5/32.png) [@kallii](https://community.symcon.de/u/kallii)\
**Post date:** [14. Dezember 2023 um 06:12 UTC](https://community.symcon.de/t/govee-geraete-via-udp-lan-api-steuern/135590/3 "2023-12-14T06:12:24Z")

</div>

Nicht wirklich… immerhin hab ich es mit statischen Scripten geschafft Geräte ein und aus zu schalten :D… und habe verstanden, dass ich lediglich die Befehle via UDP an die IP des Gerätes senden muss.

---

<div class="post-metadata">

**Author:** ![janpeterdietz](https://community.symcon.de/letter_avatar_proxy/v4/letter/j/9fc348/32.png) [@janpeterdietz](https://community.symcon.de/u/janpeterdietz)\
**Post date:** [6. Februar 2024 um 11:13 UTC](https://community.symcon.de/t/govee-geraete-via-udp-lan-api-steuern/135590/4 "2024-02-06T11:13:01Z")

</div>

Hi,  
ich habe eine Govee Lampe erstanden.  
Die Ansteuerung über UDP konnte ich realisieren, da ich nur eine Lampe habe reicht mir das erstmal.  
Falls bei euch noch Interesse besteht, sende ich gerne die Skripte

---

<div class="post-metadata">

**Author:** ![kallii](https://community.symcon.de/letter_avatar_proxy/v4/letter/k/edb3f5/32.png) [@kallii](https://community.symcon.de/u/kallii)\
**Post date:** [21. Februar 2024 um 13:28 UTC](https://community.symcon.de/t/govee-geraete-via-udp-lan-api-steuern/135590/5 "2024-02-21T13:28:45Z")

</div>

Das wäre interessant, darauf könnte ich aufbauen. Ich habs zumindest geschafft, dass ich mein Govee Light Strip M1 via eines Node-Red Umweges ein&ausschalten kann. Grüße

---

<div class="post-metadata">

**Author:** ![janpeterdietz](https://community.symcon.de/letter_avatar_proxy/v4/letter/j/9fc348/32.png) [@janpeterdietz](https://community.symcon.de/u/janpeterdietz)\
**Post date:** [21. Februar 2024 um 17:07 UTC](https://community.symcon.de/t/govee-geraete-via-udp-lan-api-steuern/135590/6 "2024-02-21T17:07:43Z")

</div>

Hallo zusammen,  
bei mir geht es direkt über Symcon.  
Zuvor in der APP die LAN API aktivieren.

Dei Schritte die ich gemacht habe.  
a) IP: Adresse der Lampe ermitteln (bei mir 192.168.3.155)  
b) Dummy Instanz angelegt (Govee)  
c) 3 Variable angelegten unter der Dummy Instanz  
Status (Bool), Farbe (Interger) / Helligkeit (Interger)  
d) UPD Socket eröffnet

 ![Bildschirmfoto 2024-02-21 um 17.48.51](https://community.symcon.de/uploads/default/original/3X/2/8/28175dd1bbd7551083eb6d1cc7316420b42c867d.jpeg)  
e) Script mit folgenden Inhalt unter der Dummy Instanz erstellt: (Govee Aktualisieren)

```auto
<?php
$id_UPD_Socket = 55068;
$id_Status = 28942;
$id_Helligkeit = 39949;
$id_Farbe = 12979;

//echo $_IPS['SENDER'];

if ($_IPS['SENDER'] == "RegisterVariable")
{
    $array_govee = json_decode($_IPS['VALUE'], true);
    
    if ( $array_govee["msg"]["cmd"] == "devStatus" )
    {
        SetValueBoolean($id_Status, $array_govee["msg"]["data"]["onOff"]);
        SetValueInteger($id_Helligkeit, $array_govee["msg"]["data"]["brightness"]);
    
        $r = $array_govee["msg"]["data"]["color"]["r"];
        $g = $array_govee["msg"]["data"]["color"]["g"];
        $b = $array_govee["msg"]["data"]["color"]["b"];

        $color = (int) ( ($r * 256 * 256) + ($g * 256) + $b);

        SetValueInteger($id_Farbe, $color);
    }
    else
    {
        echo "Govee andere Meldung";
    }
}

if ($_IPS['SENDER'] == 'Execute')
{
    $govee_message = '{ "msg" :{ "cmd" : "devStatus", "data" :{} }} ';
    USCK_SendText($id_UPD_Socket, $govee_message);
}

if ($_IPS['SENDER'] == 'RunScript')
{
    //$govee_message = '{ "msg" :{ "cmd" : "devStatus", "data" :{} }} ';
    //USCK_SendText(55068, $govee_message);
    IPS_SetScriptTimer($_IPS['SELF'], 1);
}

if ($_IPS['SENDER'] == 'TimerEvent')
{
    $govee_message = '{ "msg" :{ "cmd" : "devStatus", "data" :{} }} ';
    USCK_SendText($id_UPD_Socket, $govee_message);
    IPS_SetScriptTimer($_IPS['SELF'], 0);
}

```

f) Register Variable unter der Dummy Instanz angelegt und mit UPD Port und Script verknüpft

g) Aktionsskripte unter die Variablen gelegt:  
G1) Unter Status:

```auto
<?php

if ($_IPS['VALUE'])
{
   $value = 1;
}
else
{
    $value = 0;
}

$govee_message = '{ "msg" :{ "cmd" : "turn", "data" : { "value":' . $value . ' }}} ';
USCK_SendText(55068, $govee_message);

IPS_RunScript(50050);

```

G2 Helligkeit:

```auto
<?php

if ($_IPS['VALUE'] > 0) 
{
    if ($_IPS['VALUE'] < 100)
    {
        $value = $_IPS['VALUE'];
    }
    else
    {
        $value = 100;
    }
    $govee_message = '{ "msg" :{ "cmd" : "turn", "data" : { "value":' . 1 . ' }}} ';
    $govee_message = '{ "msg" :{ "cmd" : "brightness", "data" : { "value":' . $value . ' }}} ';

}
else
{
    $value = 0;
    $govee_message = '{ "msg" :{ "cmd" : "turn", "data" : { "value":' . $value . ' }}} ';
}

USCK_SendText(55068, $govee_message);
IPS_RunScript(50050);
tippe oder füge den Code hier ein

```

G3 Farbe:

```auto
<?php

$r = (int) ( ($_IPS['VALUE'] / 256 / 256) );
$g = (int) ( ($_IPS['VALUE'] - ($r*256*256)) / 256 );
$b = (int) ( $_IPS['VALUE'] - ($r*256*256) - $g*256) ;

$govee_message = '{ "msg" :{
                               "cmd":"colorwc", 
                               "data": { 
                                    "color": { 
                                      "r": '. $r . ', 
                                      "g": ' . $g . ', 
                                      "b": ' . $b . '
                                      }
                                      , 
                                      "colorTemInKelvin":0 
                                    }
                                }
                            }' ;

USCK_SendText(55068, $govee_message);

IPS_RunScript(50050);

```

---

<div class="post-metadata">

**Author:** ![kallii](https://community.symcon.de/letter_avatar_proxy/v4/letter/k/edb3f5/32.png) [@kallii](https://community.symcon.de/u/kallii)\
**Post date:** [24. Februar 2024 um 19:04 UTC](https://community.symcon.de/t/govee-geraete-via-udp-lan-api-steuern/135590/7 "2024-02-24T19:04:33Z")

</div>

Hey Jan, das funktioniert einwandfrei! Der Script Timer läuft bei mir auf Fehler, weshalb auch immer. Wenn ich manuell ein zyklisches Ereignis erstelle sagen wir alle 10 Sek. dann aktualisiert es auch den Wert (status usw). Danke dir!

---

<div class="post-metadata">

**Author:** ![janpeterdietz](https://community.symcon.de/letter_avatar_proxy/v4/letter/j/9fc348/32.png) [@janpeterdietz](https://community.symcon.de/u/janpeterdietz)\
**Post date:** [26. Februar 2024 um 10:25 UTC](https://community.symcon.de/t/govee-geraete-via-udp-lan-api-steuern/135590/8 "2024-02-26T10:25:05Z")

</div>

Hi,  
das klingt ja supi,  
was für ein Fehler entsteht bei beim Timer?

---

<div class="post-metadata">

**Author:** ![KaiS](https://community.symcon.de/user_avatar/community.symcon.de/kais/32/29625_2.png) [@KaiS](https://community.symcon.de/u/KaiS)\
**Post date:** [8. März 2024 um 12:52 UTC](https://community.symcon.de/t/govee-geraete-via-udp-lan-api-steuern/135590/9 "2024-03-08T12:52:22Z")

</div>

Es gibt nun ein Modul: [[Modul] Govee](https://community.symcon.de/t/modul-govee/136829)

Grüße,  
Kai
