Seite 1 von 2

Ulanzi TC001 Smart Pixel Uhr

Verfasst: 19.11.2023, 12:28
von mademyday
Dank eines Artikels in der ct (https://ct.de/y47n) habe ich ein (für mich) neues Spielzeug entdeckt:
Ulanzi TC001 Smart Pixel Uhr - geflashed mit Awtrix Light, s. https://blueforcer.github.io/awtrix-light/#/.

Ich steuere das Teil durch ein einzelnes sh-Skript auf der ccu an. Das Skript holt sich relevante Informationen aus den homematic-Systemvariablen, baut dann die dazu passenden Ansichten und sendet diese per curl-http-request an die Anzeige.

Das Skript wird per cron-tab alle 20min gestartet sowie Event-getriggert aus der homematic via system.Exec().

Hier ein Beispiel für eine Anzeige, wo zb eine "Waschmaschine-ist-fertig-seit-x-Uhr"-(Demo-)Meldung mit enthalten ist
awtrix-wms.zip
(341.84 KiB) 43-mal heruntergeladen
(leider kann hier wohl kein animiertes gif direkt als Dateianhang hochgeladen werden)

Re: Ulanzi TC001 Smart Pixel Uhr

Verfasst: 20.11.2023, 11:51
von holyset
Genau das hatte ich auch vor :D
Magst du dein Skript Teilen?

Re: Ulanzi TC001 Smart Pixel Uhr

Verfasst: 22.11.2023, 17:17
von mademyday
holyset hat geschrieben:
20.11.2023, 11:51
Magst du dein Skript Teilen?
sorry, denke das macht kaum Sinn, das Skript ist nicht auf "Weitergabe" ausgerichtet :)

vielleicht als "Denkanstoß", ein Auszug der zeigen soll, wie es in etwa läuft:
- zuerst holt ein tcl-Skript eine HomeMatic-SV - und prüft dabei auf einen Zeitstempel von "heute"
Sofern ein (tages-)aktueller Wert vorliegt
- wird der Ausgabestring je nach Inhalt und Länge ggf noch "gepimpt"
- und an eine "Custom App" an die Pixel Uhr gesendet

Code: Alles auswählen

TXT=$( "$scriptP"/../get_hm-sysvar.tcl Aussen_Temp | grep " .$(date +%y-%m-%d/..:..:..).$" | cut -d\  -f2 )
if [ "$TXT" != "" ]; then
  TXT=$( echo "$TXT" | awk 'END {printf("%.1f",$1)}' )
  TXT=$( echo "$TXT" | sed "s/\.0$//" )
  [ $( echo -n "$TXT" | wc -c ) -eq 5 ] && TXT="${TXT}C"
  [ $( echo -n "$TXT" | wc -c ) -eq 4 ] && TXT="${TXT}C "
  [ $( echo -n "$TXT" | wc -c ) -lt 4 ] && TXT="${TXT}\u00b0C "
fi
echo
echo "$( date +%Y-%m-%d\ %H:%M:%S ) * INFO * app TempA (${SET_ATIME}s): \"${TXT}\""
ICON=$( echo "8152 73 18346 56799" | cut -d\  -f$(( 1 + $RANDOM % 4 )) )
[ "$TXT" != "" ] && $CURL --config "$scriptPN".cfg "http://$DEV_IP/api/custom?name=TempA" \
     -d "{\"text\":\"${TXT}\",\"color\":[0,128,255],\"duration\":$SET_ATIME,\"lifetime\":3660,\"icon\":$ICON}"
in der curl-cfg steht außer den Zugangsdaten (-u) und timeout-Parameter im Wesentlichen:
-H "Content-Type: application/json"

Re: Ulanzi TC001 Smart Pixel Uhr

Verfasst: 01.12.2023, 16:58
von mademyday
ein Beispiel-Prog in der WebUI könnte zB wie folgt aussehen (wenn man keine Lust auf sh-Skripte hat):

Das Programm läuft alle 20min und füttert zwei sogenannte Apps TempI und TempA mit den Werten der entsprechenden Systemvariablen. Diese Apps landen dann in der normalen Rotation der LED-Matrix. (Parameter für Anzeigedauer, Icon etc hier zur Vereinfachung weggelassen.)

pAwtrix-Ulanzi_TC001.jpg

das HM-Skript dazu:

Code: Alles auswählen

! --- Prog: pAwtrix-Ulanzi_TC001

string DEV_IP = "172.20.1.105";
string DEV_USER = "admin";
string DEV_PASS = "...";

system.Exec( "sh -c '
  curl -u \"" # DEV_USER # ":" # DEV_PASS # "\" -H \"Content-Type: application/json\" -s -S --max-time 10 \\
    \"http://" # DEV_IP # "/api/custom?name=TempI\" \\
    -d \"{\\\"text\\\":\\\"" #  dom.GetObject(ID_SYSTEM_VARIABLES).Get("WZ_Temp").Value().ToString(1)
                             # "\\u00b0C\\\", \\\"color\\\":[255,0,0], \\\"lifetime\\\":3660}\";

  curl -u \"" # DEV_USER # ":" # DEV_PASS # "\" -H \"Content-Type: application/json\" -s -S --max-time 10 \\
    \"http://" # DEV_IP # "/api/custom?name=TempA\" \\
    -d \"{\\\"text\\\":\\\"" #  dom.GetObject(ID_SYSTEM_VARIABLES).Get("Aussen_Temp").Value().ToString(1)
                             # "\\u00b0C\\\", \\\"color\\\":[0,128,255], \\\"lifetime\\\":3660}\";
' >/dev/null 2>&1 &" );

WriteLine( "--- Ende ---" );

Kleiner Tipp: die (Default-)Apps kann man loswerden mit 1x leerem Content senden:

Code: Alles auswählen

  curl ... -d "{}" "http://$DEV_IP/api/custom?name=Temperature" \
                   "http://$DEV_IP/api/custom?name=Humidity" \
                   "http://$DEV_IP/api/custom?name=Battery"

looks like
screen.jpg

Re: Ulanzi TC001 Smart Pixel Uhr

Verfasst: 01.12.2023, 17:02
von Baxxy
Kannst du mal aufhören, sonst muss ich mir das Teil doch noch bestellen. :mrgreen:

Hatte mich schon gejuckt als ich den ct' Artikel las.

Re: Ulanzi TC001 Smart Pixel Uhr

Verfasst: 02.12.2023, 15:40
von Black
Das schaut interessant aus
Bastelprojekt für verregneten Winter Abende

Black

Re: Ulanzi TC001 Smart Pixel Uhr

Verfasst: 03.01.2024, 22:21
von Black
Ich hab mir die Ulanzi nun auch gegönnt zum spielen.
Erstmal mit der awtrix light software überflashed, es gitb einen dazu passenden adapter mit mqtt funktionalität im IO.Broker.

da ich immo einiges am Umbauen bin (die grosse SOlaranlage muss sich vorbereiten, da muss ich noch bisschen installieren und Messequipment und busankopplungen verbauen)

Aber das Teil gefällt mir, hat sogar den Segen meiner Frau ^^ . und das heisst was.

Black

Re: Ulanzi TC001 Smart Pixel Uhr

Verfasst: 04.03.2024, 20:55
von beginner007
Hi Zusammen,

finde die direkte Integration super. Leider schaffe ich es nicht das Icon einzubinden mit dem direkten Befehl; z.b icon für die Temperatur.
Es wurde ja erwähnt das die Parameter für Anzeigedauer, Icon etc hier zur Vereinfachung weggelassen wurden; wie würde so ein Beispiel Code hierfür jedoch aussehen?

Danke für eure Hilfe.

Grüße
b.

Re: Ulanzi TC001 Smart Pixel Uhr

Verfasst: 05.03.2024, 08:27
von mademyday
fehlende/gewünschte zusätzliche Parameter einfach - mit Komma getrennt - anhängen, zb ,"icon":nnn
(je nach Aufrufart halt mit mehr oder weniger verwirrenden Wiederholungen von \-chars :)

das obige Bsp um den icon-Parameter ergänzt:

Code: Alles auswählen

! --- Prog: pAwtrix-Ulanzi_TC001

string DEV_IP = "172.20.1.105";
string DEV_USER = "admin";
string DEV_PASS = "...";

system.Exec( "sh -c '
  curl -u \"" # DEV_USER # ":" # DEV_PASS # "\" -H \"Content-Type: application/json\" -s -S --max-time 10 \\
    \"http://" # DEV_IP # "/api/custom?name=TempI\" \\
    -d \"{\\\"text\\\":\\\"" #  dom.GetObject(ID_SYSTEM_VARIABLES).Get("WZ_Temp").Value().ToString(1)
                             # "\\u00b0C\\\", \\\"color\\\":[255,0,0], \\\"lifetime\\\":3660, \\\"icon\\\":2355 }\";
' >/dev/null 2>&1 &" );

WriteLine( "--- Ende ---" );
natürlich muss das verwendete Icon, hier Nummer 2355, zuerst per Awtrix-Webkonsole auf die Uhr geladen werden...
-->
screen2a.jpg
-->
screen2.jpg
screen2.jpg (16.53 KiB) 495 mal betrachtet

Re: Ulanzi TC001 Smart Pixel Uhr

Verfasst: 05.03.2024, 23:25
von beginner007
Super vielen Dank für die schnelle Rückmeldung.
Funktioniert alles wie es soll…. jetzt sogar mit Icon.