Autor Thema: DIY Wortuhr/QLOCKTWO (ESPEasy/WS2812B)  (Gelesen 385 mal)

Offline Pythonf

  • Full Member
  • ***
  • Beiträge: 456
DIY Wortuhr/QLOCKTWO (ESPEasy/WS2812B)
« am: 28 September 2018, 14:26:13 »
Hey, ich wollte mein aktuelles Projekt vorstellen und eine FHEM-basierte Uhrzeitsteuerung zur Verfügung stellen.
Es handelt sich um eine Wortuhr auf Basis der QLOCKTWO.

Auf dem ESP8266 läuft das Plugin NeoPixelBusFX mit 110 WS2812B. Der Vorteil gegenüber der Software auf dem ESP8266 liegt darin, dass auch Nachrichten abseitig der Uhrzeit dargestellt werden können.

+*00:05:00 {
my $COLOR1 = "FF0000";

fhem("set ESPEasy_WordClock nfx line 1 110 000000");

my ($hour, $min, $sec) = split(':',$hms);

$hour += 0; #Um führende Null zu entfernen

if($hour > 7 and $hour < 20){$COLOR1 = "FFFFFF";}

fhem("set WordClock_Count $hour");


#Es/ist
{fhem("set ESPEasy_WordClock nfx line 1 2 $COLOR1");}
{fhem("set ESPEasy_WordClock nfx line 4 6 $COLOR1");}

#Alle 5 min
$hour += 1; #Zur Vollen Stunde aufrunden
if ( $min >= 5 and $min < 10){
fhem("set ESPEasy_WordClock nfx line 8 11 $COLOR1"); #5
fhem("set ESPEasy_WordClock nfx line 41 44 $COLOR1"); #Nach
$hour -=1;
}

if ( $min >= 10 and $min < 15){
fhem("set ESPEasy_WordClock nfx line 19 22 $COLOR1"); #10
fhem("set ESPEasy_WordClock nfx line 41 44 $COLOR1"); #Nach
$hour -=1;
}

if ( $min >= 20 and $min < 25){
fhem("set ESPEasy_WordClock nfx line 12 18 $COLOR1"); #20
fhem("set ESPEasy_WordClock nfx line 41 44 $COLOR1"); #Nach
$hour -=1;
}

if ( $min >= 25 and $min < 30){
fhem("set ESPEasy_WordClock nfx line 8 11 $COLOR1"); #5
fhem("set ESPEasy_WordClock nfx line 37 39 $COLOR1"); #Vor
}

if ( $min >= 35 and $min < 40){
fhem("set ESPEasy_WordClock nfx line 8 11 $COLOR1"); #5
fhem("set ESPEasy_WordClock nfx line 41 44 $COLOR1"); #Nach
}

if ( $min >= 40 and $min < 45){
fhem("set ESPEasy_WordClock nfx line 19 22 $COLOR1"); #10
fhem("set ESPEasy_WordClock nfx line 41 44 $COLOR1"); #Nach
}

if ( $min >= 50 and $min < 55){
fhem("set ESPEasy_WordClock nfx line 19 22 $COLOR1"); #10
fhem("set ESPEasy_WordClock nfx line 37 39 $COLOR1"); #Vor
}

if ( $min >= 55){
fhem("set ESPEasy_WordClock nfx line 8 11 $COLOR1"); #5
fhem("set ESPEasy_WordClock nfx line 37 39 $COLOR1"); #Vor
}


if( $min > 14 and $min < 20){fhem("set ESPEasy_WordClock nfx line 27 33 $COLOR1");}
if( $min >= 25 and $min < 45){fhem("set ESPEasy_WordClock nfx line 45 48 $COLOR1");}
if( $min > 44 and $min < 50){fhem("set ESPEasy_WordClock nfx line 23 33 $COLOR1");}
if( $min > 59 or  $min < 5){fhem("set ESPEasy_WordClock nfx line 100 102 $COLOR1");$hour -=1;}

if($hour > "12"){$hour -= 12}; #12 h statt 24


#Volle Stunden
if( $hour eq "0" ){fhem("set ESPEasy_WordClock nfx line 56 59 $COLOR1");}
if( $hour eq "1" ){fhem("set ESPEasy_WordClock nfx line 83 86 $COLOR1");}
if( $hour eq "2" ){fhem("set ESPEasy_WordClock nfx line 63 66 $COLOR1");}
if( $hour eq "3" ){fhem("set ESPEasy_WordClock nfx line 85 88 $COLOR1");}
if( $hour eq "4" ){fhem("set ESPEasy_WordClock nfx line 74 77 $COLOR1");}
if( $hour eq "5" ){fhem("set ESPEasy_WordClock nfx line 70 73 $COLOR1");}
if( $hour eq "6" ){fhem("set ESPEasy_WordClock nfx line 50 54 $COLOR1");}
if( $hour eq "7" ){fhem("set ESPEasy_WordClock nfx line 78 83 $COLOR1");}
if( $hour eq "8" ){fhem("set ESPEasy_WordClock nfx line 90 93 $COLOR1");}
if( $hour eq "9" ){fhem("set ESPEasy_WordClock nfx line 104 107 $COLOR1");}
if( $hour eq "10" ){fhem("set ESPEasy_WordClock nfx line 107 110 $COLOR1");}
if( $hour eq "11" ){fhem("set ESPEasy_WordClock nfx line 68 70 $COLOR1");}
if( $hour eq "12" ){fhem("set ESPEasy_WordClock nfx line 95 99 $COLOR1");}



#Sonderfälle
if( $min < 5 and $hour eq "1"){fhem("set ESPEasy_WordClock nfx one 83 000000");}

}

Aktuell fehlt noch die Minutenanzeige der Uhr. Falls jemand eine Idee hat, wie man die Aktualisierung der Pixel realisieren kann, ohne alle Pixel zurück zusetzen oder einen schönen Übergang zwischen den Uhrzeiten  einzubauen freu ich mich über Vorschläge.

Liebe Grüße
Fabian

Offline MBHG

  • Full Member
  • ***
  • Beiträge: 112
Antw:DIY Wortuhr/QLOCKTWO (ESPEasy/WS2812B)
« Antwort #1 am: 08 Dezember 2018, 20:29:47 »
Hallo,

Ich habe diese Uhr auch realisiert. Das tolle an dem ws 2812b ist die wenige Lötarbeit. Ich habe mir einen Ikea Ribba Rahmen gekauft und die Front in 3d ausgedruckt.

Meine Erfahrung ist hier zu finden.
https://smarthome.family.blog/2018/12/03/ikea-ribba-wordclock-bussystem


Gruss Marc
-----------------------------------------------------------
https://smarthome.family.blog Debian Linux, NanoCUL 868, NanoCUL 433, 4x HM-SW4, HM Asksin Unisensor, RCS 1000 N Comfort, Magic Home, Rauchmelder PT2262, Talk2Fhem