Wordclock build-yours.de alternative "Treibersoftware"

Begonnen von dkreutz, 19 Oktober 2019, 17:23:45

Vorheriges Thema - Nächstes Thema

dkreutz

Hallo,

Ich habe von build-yours.de die Wordclock. Deren ESP8266 ist mit einer propietären Software geflasht. Die zwar tut was sie soll, ist aber nicht sonderlich flexibel und funkt anscheinend auch "nach Hause" zum Hersteller. Deshalb habe ich auf Grundlage von Pythonf's Codeschnipsel für Wortuhr/QLOCKTWO meine Variante für die Wordclock von build-yours.de erstellt:

Der ESP8266 wird mit ESPeasy (mega-20190607) geflasht, in ESPeasy dann:
1) Config -> Unit name: "ESP-Wortuhr"
1) einen Controller "FHEM HTTP" einrichten und mit der IP des FHEM-Servers konfigurieren, ggfs. in FHEM ein EspBridge Device einrichten.
2) ein Device "Output - Neopixel (basic)",  Name "WordClock", LED-Count "110", GPI "GPIO-12 (D6)" und Strip Type "GRB" einrichten.

Wenn in FHEM die EspBridge richtig konfiguriert ist, müsste es ein neues Device "ESPEasy_ESP_Wortuhr_UHR" geben, so heißt es zumindest bei mir...

Code für das at-Device in FHEM:

+*00:05:00 {
my @COLOR1 = ("34 167 240",
              "44 62 80",
              "140 224 254",
              "64 219 176",
              "253 158 102",
              "254 226 85",
              "91 105 132",
              "255 255 255",
              "241 243 244",
              "189 195 199");

fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 1 110 0 0 0");

my ($hour, $min, $sec) = split(':',$hms);
#my ($hour, $min, $sec) = split(':',"15:59:00");

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

#Es/ist
{fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 109 110 $COLOR1[rand(10)]");}
{fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 105 107 $COLOR1[rand(10)]");}

#Alle 5 min
$hour += 1; #Zur Vollen Stunde aufrunden
if ( $min >= 5 and $min < 10){
fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 100 103 $COLOR1[rand(10)]"); #5
fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 69 72 $COLOR1[rand(10)]"); #Nach
$hour -=1;
}

if ( $min >= 10 and $min < 15){
fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 89 92 $COLOR1[rand(10)]"); #10
fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 69 72 $COLOR1[rand(10)]"); #Nach
$hour -=1;
}

if ( $min >= 20 and $min < 25){
fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 93 99 $COLOR1[rand(10)]"); #20
fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 69 72 $COLOR1[rand(10)]"); #Nach
$hour -=1;
}

if ( $min >= 25 and $min < 30){
fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 100 103 $COLOR1[rand(10)]"); #5
fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 73 75 $COLOR1[rand(10)]"); #Vor
}

if ( $min >= 35 and $min < 40){
fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 100 103 $COLOR1[rand(10)]"); #5
fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 69 72 $COLOR1[rand(10)]"); #Nach
}

if ( $min >= 40 and $min < 45){
fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 93 99 $COLOR1[rand(10)]"); #20
fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 73 75 $COLOR1[rand(10)]"); #vor
}

if ( $min >= 50 and $min < 55){
fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 89 92 $COLOR1[rand(10)]"); #10
fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 73 75 $COLOR1[rand(10)]"); #Vor
}

if ( $min >= 55){
fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 100 103 $COLOR1[rand(10)]"); #5
fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 73 75 $COLOR1[rand(10)]"); #Vor
}


if( $min >= 15 and $min < 20){
   fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 78 84 $COLOR1[rand(10)]"); #viertel
   fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 69 72 $COLOR1[rand(10)]"); #Nach
   $hour -=1;
}
if( $min >= 25 and $min < 40){
   fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 63 66 $COLOR1[rand(10)]"); #halb
}
if( $min > 44 and $min < 50){
   fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 78 84 $COLOR1[rand(10)]"); #viertel
   fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 73 75 $COLOR1[rand(10)]"); #Vor
}

if( $min > 59 or  $min < 5){$hour -=1;}
if($hour > "12"){$hour -= 12}; #12 h statt 24

#Volle Stunden
if( $hour eq "0" ){fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 57 61 $COLOR1[rand(10)]");}
if( $hour eq "1" ){fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 47 50 $COLOR1[rand(10)]");}
if( $hour eq "2" ){fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 45 48 $COLOR1[rand(10)]");}
if( $hour eq "3" ){fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 40 43 $COLOR1[rand(10)]");}
if( $hour eq "4" ){fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 30 33 $COLOR1[rand(10)]");}
if( $hour eq "5" ){fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 34 37 $COLOR1[rand(10)]");}
if( $hour eq "6" ){fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 2 6 $COLOR1[rand(10)]");}
if( $hour eq "7" ){fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 50 55 $COLOR1[rand(10)]");}
if( $hour eq "8" ){fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 18 21 $COLOR1[rand(10)]");}
if( $hour eq "9" ){fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 26 29 $COLOR1[rand(10)]");}
if( $hour eq "10" ){fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 14 17 $COLOR1[rand(10)]");}
if( $hour eq "11" ){fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 23 25 $COLOR1[rand(10)]");}
if( $hour eq "12" ){fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 57 61 $COLOR1[rand(10)]");}

#Sonderfälle
if( $min < 5 and $hour eq "1"){fhem("set ESPEasy_ESP_Wortuhr_UHR neopixel 50 0 0 0");}

#UHR
if( $min > 59 or  $min < 5){fhem("set ESPEasy_ESP_Wortuhr_UHR neopixelline 9 11 $COLOR1[rand(10)]");}


}


COLOR1 ist ein Array mit RGB-Werten, bei jeder "Wortausgabe" wird per rand(10) einer der Werte ausgewählt, so dass die Anzeige schön bunt wird. Wem das zu bunt ist, kann alle Arrayeinträge auf den gleichen Wert z.B. "255 255 255" ändern...

Das "Buchstabenschema" bei der Wordclock ist:

E S B I S T U F Ü N F
Z E H N Z W A N Z I G
D R E I V I E R T E L
T D N A C H V O R Y O
H A L B R Z W Ö L F S
Z W E I N S I E B E N
U D R E I R S F Ü N F
E L F N E U N V I E R
R A C H T Z E H N R S
B S E C H S D E U H R

LED Nr. 1 ist unten links, oben rechts ist LED Nr. 110. Der Verlauf ist dann von unten nach oben immer alternierend links->rechts, rechts->links, links->rechts, usw.
Raspberry Pi3B+ (Bullseye) / JeeLink868v3c (LaCrosse), nanoCUL433 (a-culfw V1.24.02), HM-MOD-UART (1.4.1), TEK603, MapleCUL / diverse Sensoren/Sender/Aktoren von Technoline, Intertechno, Shelly, Homematic und MAX!, Froggit Wetterstation, Luftdaten.info / Autor des fhem-skill für Mycroft.ai

Pauli29

Das Projekt gefällt mir und ich möchte es daher gerne nachbauen  :)
Wieviel MB hat der verwendete ESP (für die richtige bin)?

hauiproductions

Hallo zusammen,

in den letzten Wochen kam es immer mal wieder zu Ausfällen der Wordclick, weil die Herstellerseite down war. Da sieht man wieder wie wichtig eine gewisse Unabhängigkeit vom Hersteller ist. Hinterher machen die noch ein Abomodell draus.... :-)

Wäre es möglich hier eine detailliertere Anleitung zur Inbetriebnahme mit FHEM / Flashen des Microcontrollers, usw.. aufzubauen ?

Gern kann ich auch unterstützen, so wie meine Möglichkeiten ausreichen..... Danke Euch schonmal !

Gruß
Markus

dkreutz

Zitat von: Pauli29 am 10 November 2019, 18:19:36
Das Projekt gefällt mir und ich möchte es daher gerne nachbauen  :)
Wieviel MB hat der verwendete ESP (für die richtige bin)?
Das ist ein ganz normaler Wemos D1 mini (ESP8266 mit 4MB Flash Memory)
Raspberry Pi3B+ (Bullseye) / JeeLink868v3c (LaCrosse), nanoCUL433 (a-culfw V1.24.02), HM-MOD-UART (1.4.1), TEK603, MapleCUL / diverse Sensoren/Sender/Aktoren von Technoline, Intertechno, Shelly, Homematic und MAX!, Froggit Wetterstation, Luftdaten.info / Autor des fhem-skill für Mycroft.ai

dkreutz

Zitat von: Haui am 26 Februar 2020, 11:51:11
Wäre es möglich hier eine detailliertere Anleitung zur Inbetriebnahme mit FHEM / Flashen des Microcontrollers, usw.. aufzubauen?

Das passt dann aber nicht mehr ganz für die Rubrik "Codeschnipsel", aber hier ein paar Einstiegspunkte
FHEM Commandref ESPEASY
FHEM Wiki ESPEASY
FHEM Forumsthread zum Modul ESPEASY
Raspberry Pi3B+ (Bullseye) / JeeLink868v3c (LaCrosse), nanoCUL433 (a-culfw V1.24.02), HM-MOD-UART (1.4.1), TEK603, MapleCUL / diverse Sensoren/Sender/Aktoren von Technoline, Intertechno, Shelly, Homematic und MAX!, Froggit Wetterstation, Luftdaten.info / Autor des fhem-skill für Mycroft.ai