kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Smart Home-Anwendung mit der T-Watch 2020 V3 von Lilygo

(EN google-translate)

(PL google-translate)

  • Eine Methode, Smart Home Module miteinander zu vernetzen, ist die Verwendung eines lokalen WiFi-Netzes unter Verwendung des UDP-Protokolls.
  • Beispielsweise lassen sich die Geräte von Wiz auf diese Weise ansprechen.
  • Nachfolgend wird die Möglichkeit geschaffen, Einschalt- und Ausschaltbefehle mit der T-WATCH an eine Smart Home Lampe zu senden.
  • Die notwendigen UDP-Nachrichten wurden hier herausgefunden:
https://seanmcnally.net/wiz-config.html
Licht, oder Steckdose einschalten:
{"id":1,"method":"setState","params":{"state":true}}

Licht, oder Steckdose ausschalten:
{"id":1,"method":"setState","params":{"state":false}}

Lampe auf eine bestimmte Lichttemperatur (hier 3000 Kelvin) und eine bestimmte Helligkeit (hier 75 Prozent) setzen:
{"id":1,"method":"setPilot","params":{"temp":3000,"dimming":75}}

Rot/Grün/Blau Anteil auf einen bestimmten Anteil und eine bestimmte Helligkeit setzen:
{"id":1,"method":"setPilot","params":{"r":255,"g":0,"b":0,"dimming": 75}}

Statusanfrage bei einem Gerät:
{"method":"getPilot","params":{}}

Code 0-1: Notwendige UDP-Nachrichten für einfache Steueraufgaben bei Produkten der Firma Wiz.

  • Weitere Infos zu Smart Home Technologie, siehe auch:
12_Technikphilosophie/05_Fallstudien/01_Smart_Home
  • Bertko, C., Weber, T., Home Smart Home - Der praktische Einstieg in die Hausautomation, Hanser, München 2017.
  • Butz, A., Krüger, A., Mensch-Maschine-Interaktion, de Gruyter, Berlin 2017.
  • Sadek, I. et. al., Novel Unobtrusive Approach for Sleep Monitoring Using Fiber Optics in an Ambient Assisted Living Platform, S.48-60 in: Enhanced Quality of Life and Smart Living, Springer LNCS 10461, Cham 2017.
  • Seiderer, A., Dang, C.T., André, E., Exploring Opportunistic Ambient Notifications in the Smart Home to Enhance Quality of Live, S.151-160 in: Enhanced Quality of Life and Smart Living, Springer LNCS 10461, Cham 2017.
  • Treviranus, J., Teaching Our Machines to be Smart, Not Prejudiced, S.XIII in: Enhanced Quality of Life and Smart Living, Springer LNCS 10461, Cham 2017.

Vorversuch: Verwendung eines Java/Processing-Sketches auf einem Laptop/PC


Steuerung der Lampe vom PC aus.

Bild 0-1: Steuerung der Lampe vom PC aus.


https://youtu.be/Ht2dDGhvP4o -- Steuerung der Lampe vom PC aus, Video.

  • Per Tastendruck ausgelöst wird wechselnd die Einschalt- und die Ausschaltnachricht an die Lampe geschickt.
  • Siehe insbesondere die Callback-Methode keyPressed()...
  • Es wurde direkt mit dem Laptop ein Hotspot eingerichtet.
  • Die Broadcast-IP (hier 10.42.0.255) muss aus dem jeweiligen Hotspot-Netz ermittelt werden.
  • Die Portadresse liegt fest und entspricht der von der Lampe akzeptierten, hier 38899.
import hypermedia.net.*;

UDP udp; 

void setup() 
{
  udp = new UDP( this, 38899 );
  udp.listen( true );
}

void draw() 
{
    size(200,200);
    background(255,255,255);
}
 
boolean AN = true;
void keyPressed() 
{  
    AN=!AN;
    String message  = "";
    if(AN)
      message = "{\"id\":1,\"method\":\"setState\",\"params\":{\"state\":true}}";
    else  
      message = "{\"id\":1,\"method\":\"setState\",\"params\":{\"state\":false}}";
    String ip       = "10.42.0.255";  // the remote IP address
    int port        = 38899;		  // the destination port
    
    message = message+";\n";
    udp.send( message, ip, port );
    
}
void receive( byte[] data, String ip, int port ) 
{  
  data = subset(data, 0, data.length-2);
  String message = new String( data );  
  println( "receive: \""+message+"\" from "+ip+" on port "+port );
}

Code 0-2: TWATCH_WIZ002_PC -- Java/Processing-Sketch zur Steuerung einer Smart Home Lampe per Tastendruck.

TWATCH_WIZ002_PC.zip -- Java/Processing-Sketch zur Steuerung einer Smart Home Lampe per Tastendruck.

Verwendung einer T-WATCH V3 zur Steuerung einer Smart Home Lampe

  • Der Hotspot hotspotK wurde weiterhin vom Laptop bereitgestellt.
  • Alternativ könnte ein Smartphone verwendet werden, um den Hotspot zu erzeugen.
  • Der Name des Hotspots und das WPA2-Passwort müssen im nachfolgenden Quelltext angepasst werden.
  • Sind mehr als eine Lampe oder Steckdose in Verwendung, so muss die Variable id in der gesendeten Nachricht variiert werden.
  • Wieder dient das Projekt TWATCH_PROC023 als Basis und muss mit "Save as" / "Speichern unter" kopiert werden.
  • Dann wird lediglich der Haupttab verändert.
  • Wegen Datentyp-Kompatibilitätsproblemen wurden alle Nachrichten doppelt bereitgestellt: als const uint8_t, um sie zu senden und als char, um deren Länge mit strlen(...) zu messen.

08_Archiv/06_Ing/01_Bauplan/04_Hotspot -- Hinweise zum Einrichten eines Hotspots an einem Linux-PC (Xubuntu).

05_esp32AV/01_Bauanleitung/01_Elektronik_und_Software/03_Videostream -- Hinweise zum Einrichten eines Hotspots mit einem Android Smartphone.

  • Per Knopfdruck wird abwechselnd die Einschalt- und die Ausschaltnachricht per UDP gesendet.
  • Falls die WiFi-Verbindung bei Drücken des Knopfes noch nicht besteht, wird vorher ebenfalls versucht diese zu erneuern.
  • Auf dem Display wird angezeigt, ob die Lampe gerade an oder aus ist.
Lampe aus.

Bild 0-2: Lampe aus.

Lampe an.

Bild 0-3: Lampe an.


https://youtu.be/KKv1UixNgjY -- Steuerung einer Smart Home Lampe von Wiz mittels einer LilyGo T-WATCH V3, Video.

TWATCH_PROC023_WIZ_LAMP_SMARTHOME.zip -- Projekt für Arduino IDE.

#include "twatch.h"
#include "variables.h"
#include "functions.h"

const char* hotspot = "hotspotK";
const char* password = "12345678";
int udpport = 38899;


bool ON=false;

const uint8_t messageON[] = "{\"id\":1,\"method\":\"setState\",\"params\":{\"state\":true}}";
const uint8_t messageOFF[] = "{\"id\":1,\"method\":\"setState\",\"params\":{\"state\":false}}";
char messageON_LEN[] = "{\"id\":1,\"method\":\"setState\",\"params\":{\"state\":true}}";
char messageOFF_LEN[] = "{\"id\":1,\"method\":\"setState\",\"params\":{\"state\":false}}";
char ip[] = "10.42.0.255";
IPAddress serverIP(10, 42, 0, 255); // Replace with the server's IP address
uint16_t serverPort = 38899; // Replace with the server's port
void setup() 
{
    setupTWATCH();
    setupWIFI(hotspot,password,udpport);
    setFont(1, 255,255,255,  0,0,0);
    backlight(true); 
}

void loop() 
{
  if(button())
  {
      if(!WIFIOKAY)
         setupWIFI(hotspot,password,udpport);
      ON=!ON;   
      if(ON)
      {
           udp.writeTo(messageON,strlen(messageON_LEN),serverIP,serverPort);
      }
      else
      {
           udp.writeTo(messageOFF,strlen(messageOFF_LEN),serverIP,serverPort);        
      }
      
  }
  clear();
  cursor(0,0);
  if(ON)
     editor("LAMP ON!");
  else
     editor("LAMP OFF!");
     
  delay(100);  

}

Code 0-3: Haupttab im Projekt TWATCH_PROC023_WIZ_LAMP_SMARTHOME.