Ankündigung

Einklappen
Keine Ankündigung bisher.

Govee LBS

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Govee LBS

    Hat jemand GOVEE im Einsatz ?

    Hab begonnen den LBS zu schreiben - recht rudimentär noch alles, hab aber wohl kaum Zeit (und Lust) das ordentlich zu machen.
    Mir reicht die Funktionalität erstmal ( eigentlich reicht on/off)
    Hier mal der LBS:

    PHP-Code:
    ###[DEF]###

    [name            =    Govee  V0.0.1]

    [e#1                        = Enable #init=1]
    [e#2 IMPORTANT    = IP                        ]
    [e#3 TRIGGER = get states                         ]
    [e#4 TRIGGER = PWR state                                ]
    [e#5 TRIGGER = Brightness                                ]
    [e#6 TRIGGER = RGB as hex #init = aabbcc]

    [a#1        = nothing          ]

    ###[/DEF]###


    ###[HELP]###



    ###[/HELP]###


    ###[LBS]###
    <?
    function LB_LBSID($id) {
        if ($E=logic_getInputs($id)) {

            if (!isEmpty($E[2]['value'])) {
                    logic_setInputsQueued($id,$E);
                logic_callExec(LBSID,$id);
            }

        }
    }
    ?>
    ###[/LBS]###


    ###[EXEC]###
    <?

    define ("LOG1689","LBS19001689");
    define ("LOG_STEP",'0');
    define ("LOG_ERROR",'1');

    require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
    set_time_limit(0);
    sql_connect();

    $E=logic_getInputsQueued($id);
    $enabled = $E[1]['value'];    // LBS enable from $E[1]
    $deviceIP = $E[2]['value'];    // IP address from $E[2]
    $devicePort = 4003;
    $color['TemInKelvin'] = 7200;
    $command = "";
    if ($enabled) {

        // Create a socket
        $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
        if ($socket === false) {
            writeToCustomLog('LOG', 'LOG_ERROR', "socket_create() failed: " . socket_strerror(socket_last_error()));
            $comOK = 0;  // Communication error
        } else {
            // Connect to the Govee device

                if (socket_connect($socket, $deviceIP, $devicePort) == false) {
                writeToCustomLog('LOG', 'LOG_ERROR', "socket_connect() failed: " . socket_strerror(socket_last_error()));
                $comOK = 0;  // Communication error
            } else {

                // Define the command to send to the Govee device 
                        if ($E[4]['refresh'] == 1){
                            if ($E[4]['value'] == true) {
                        // If $E[4] is true, send a command to turn on the device
                        $command = '{"msg":{"cmd":"turn","data":{"value":1}}}';
                    } else {
                        // If $E[4] is false, send a command to turn off the device
                        $command = '{"msg":{"cmd":"turn","data":{"value":0}}}';
                    }
                        }


                        if ($E[5]['refresh'] == 1) {
                            $brightness = $E[5]['value'];
                            $command = '{"msg":{"cmd":"brightness","data":{"value":'.$brightness.'}}}';
                        }
                        if ($E[6]['refresh'] == 1) {
                            $hex = $E[6]['value'];
                            $color['r'] = hexdec(substr($hex,0,1).substr($hex,0,1));
                            $color['g'] = hexdec(substr($hex,2,1).substr($hex,2,1));
                            $color['b'] = hexdec(substr($hex,4,1).substr($hex,4,1));
                            $command = '{"msg":{"cmd":"colorwc","data":{"color":{"r":'.$color['r'].',"g":'.$color['g'].',"b":'.$color['b'].'}}}}';
                        }

                // Send the command to the Govee device
                            writeToCustomLog('LOG', 'LOG_STEP', "writing command =" . $command."");

                if (socket_write($socket, $command, strlen($command)) == false) {
                    writeToCustomLog('LOG', 'LOG_ERROR', "socket_write() failed: " . socket_strerror(socket_last_error()));
                    $comOK = 0;  // Communication error
                } else {
                }

                // Close the socket
                socket_close($socket);
            }
        }
    }
    sql_disconnect();
    ?>
    ###[/EXEC]###
    Grüße
    Christian
    __________________

    #2
    Ich habe davon eine Lichterkette sowie zwei RBGW LED-Fluter zu Hause, die bei Feierlichkeiten dann und wann im Einsatz sind.
    Da mein Anwendungsfall recht übersichtlich war, habe ich mir nicht die Arbeit gemacht hierfür einen Baustein zu schreiben.

    Aber wenn er im Angebot ist, würde ich ihn bei Zeiten gerne mal testen.

    Kommentar


      #3
      Hallo Christian,
      habe mal versucht den Code in eine php.Datei zu packen, in EDOMI importiert und versucht ihn zum Laufen zu bekommen.

      Kannst du noch die Ein- und Ausgänge etwas beschreiben? Mit experimentieren habe ich es nicht hinbekommen…

      Danke

      Kommentar


        #4
        E1 = Enable (muss 1 sein)
        E2 = IP der Leuchte
        E3 ... macht nix
        E4 = PWR = EIN/AUS
        E5 = Brightness = Helligkeit
        E6 = RGB = Farbe als RGB HexWert z.B. aabbcc

        A1... gibt nichts aus


        sorry .. aber mehr kann das (derzeit) nicht
        Grüße
        Christian
        __________________

        Kommentar


          #5
          alles gut, Danke für die schnelle Rückmeldung und den LBS.
          Ich kann also über E4 schalten, aber bekomme keine Rückmeldung in welchem Zustand (an oder aus) das Govee-Licht ist. OK. Ist erst mal besser als nichts.
          Dann kann ich wenigste das Licht bei meinem Sohn damit zur Sicherheit abends ausschalten...

          Falls du mal etwas erweitern solltest, bitte gern über das Forum einen Hinweis. Ich teste gern...

          VG Mario

          Kommentar


            #6
            ... muss noch mal nachfragen.
            Die Govee reagiert nicht auf meine "Befehle".
            Da steht dann im Log: 2023-12-08 16:13:0480625726012LOG_STEPwriting command ={"msg":{"cmd":"turn","data":{"value":1}}}, was zumindest für mich heißt, das Commando geht raus.
            Muss ich denn noch an anderer Stelle, z.B. im Govee selbst noch etwas konfigurieren??​

            Kommentar


              #7
              Zitat von Kaema Beitrag anzeigen
              ... im Govee selbst noch etwas konfigurieren
              https://app-h5.govee.com/user-manual/wlan-guide
              Grüße
              Christian
              __________________

              Kommentar


                #8
                Schau ich mir mal bei Gelegenheit an, Danke

                Kommentar


                  #9
                  Läuft! Nach Update des Govees und Anforderung des API Schlüssels, ohne in irgend einzubauen, funktioniert es

                  Kommentar


                    #10
                    Zitat von trax Beitrag anzeigen
                    Hat jemand GOVEE im Einsatz ?

                    Hab begonnen den LBS zu schreiben - recht rudimentär noch alles, hab aber wohl kaum Zeit (und Lust) das ordentlich zu machen.
                    Mir reicht die Funktionalität erstmal ( eigentlich reicht on/off)
                    Hallo Christian,

                    Absolut spitze. Ich kann nun meine Toreinfahrt mit den Wegleuchten mit ins Haus einbinden.
                    Vielen lieben Dank für den LBS!

                    Gruß André
                    ...and I thought my jokes were bad!

                    Kommentar


                      #11
                      trax

                      sag mal müsste es nicht in dem PHP vom LBS von dir wie folgt heißen?

                      IST
                      $color['TemInKelvin'] = 7200; // MIN:2000 - MAX: 9000


                      SOLL
                      $colorTem['TemInKelvin'] = 7200; // MIN:2000 - MAX: 9000
                      ...and I thought my jokes were bad!

                      Kommentar


                        #12
                        eXec

                        Zitat von eXec Beitrag anzeigen
                        ...müsste es nicht..
                        müssen eher nicht ...🤷‍♂️

                        // Definition #p-code
                        $color = array(
                        'TempInKelvin' => {Dec-Wert aus Eingang},
                        'r' => {Hex-Wert aus Eingang},
                        'g' => {Hex-Wert aus Eingang},
                        'b' => {Hex-Wert aus Eingang}

                        );​

                        Zitat von eXec Beitrag anzeigen
                        $colorTem['TemInKelvin'] = 7200; // MIN:2000 - MAX: 9000
                        ... ginge natürlich auch, wäre aber wohl besser kein array

                        $colorTemp = 7200; // MIN:2000 - MAX: 9000

                        Soweit ich die API verstanden habe ​kann man entweder eine Farbtemperatur oder einen RGB Wert einstellen
                        - somit reicht eigentlich 1 Eingang, und deshalb verwende ich 1 Variable die beides "kann" (könnte) // #not_yet_implemented.
                        Grüße
                        Christian
                        __________________

                        Kommentar


                          #13
                          Ah ok. Ich glaub ich habs jetzt verstanden. Tue mir noch etwas schwer mit dem PHP.
                          Danke für die Erläuterung!
                          ...and I thought my jokes were bad!

                          Kommentar

                          Lädt...
                          X