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
e) Script mit folgenden Inhalt unter der Dummy Instanz erstellt: (Govee Aktualisieren)
<?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:
<?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:
<?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:
<?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);