Kleines Bastelprojekt fertiggestellt was leider etwas warten musste. eigentlich ist es fertig, ich muss nur noch die led module etwas ausrichten.
notwendiger kram:
- wemos / nodemcu o.ä. mit nem esp chip
ca 2€ https://de.aliexpress.com/item/326517475…rchweb201603_60
- MAX 7219 (2x4) ....wenn nur 1x4 genutzt wird ist die Laufschrift sehr schlecht lesbar, da die Zeile einfach zu kurz ist
ca 8-10€ https://de.aliexpress.com/item/326339105….7b854c4dQd6bjT
- 1 altes usb Netzteil (1A) + Kabel
- optional klebefolie durch die dann die leds durchleuchten können
für den der es nachbauen will eine schritt für schritt anleitung
1. sketch runterladen (im Anhang)
2. sketch anpassen (ssid, passwort, ip des mqtt servers, anzahl der led module) und auf den controller schieben
3. max7218 an den controller anschliessen (pinbelegung ist im sketch dokumentiert)
4. folgendes in die openhab things datei (in den bereich der mqtt config natürlich):
Thing topic display "Display" @ "Mein Raum" {
Channels:
Type string : Displaytext "Displaytext" [commandTopic="LEDMatrix/text"]
Type string : Displayhelligkeit "Displayhelligkeit" [commandTopic="LEDMatrix/intensity"]
Type string : Displayspeed "Displayspeed" [commandTopic="LEDMatrix/scrollwait"]
}
5. folgendes in die openhab items (channels ggf auf eure mqtt bridge anpassen):
String Displaytext "Displaytext [%s]" {channel="mqtt:topic:embedded-mqtt-broker:display:Displaytext"}
String Displayhelligkeit "Displayhelligkeit (0-15) [%s]" {channel="mqtt:topic:embedded-mqtt-broker:display:Displayhelligkeit"}
String Displayspeed "Displayspeed in ms - kleiner ist schneller [%s]" {channel="mqtt:topic:embedded-mqtt-broker:display:Displayspeed"}
6. fertig
das ganze kann nun mittels rules alles an werten/events verarbeiten was so in eurem smarthomesystem rumfliegt (wetterdaten usw usw). es muss einfach nur per mqtt und "sendCommand" zum "Displaytext" item als string gesendet werden.
Displaytext.sendCommand("Hallo!")
beispiel:
rule "bad display"
when
Item Bad_Licht changed
then
val wolkendichte = Math::round((Wetter_Wolkenheute.state as Number).floatValue())
val temperatur = Math::round((Wetter_Temperatur.state as Number).floatValue())
val temperatur_max = Math::round((Wetter_Temp_Max.state as Number).floatValue())
val regenrisiko = Math::round((Niederschlagwahr_heute.state as Number).floatValue())
val badtemp = Math::round((Temp_Badezimmer.state as Number).floatValue())
switch Bad_Licht.state {
case ON: {
if(now.getHourOfDay() >4 && now.getHourOfDay() <11) {
Displaytext.sendCommand("Guten Morgen :) Temperatur im Bad: " + badtemp + "C Aussentemperatur: " + temperatur + "C Heute maximal: " + temperatur_max + "C Regenrisiko heute: " + regenrisiko + "% Wolkendichte heute: " + wolkendichte + "%")
}
if(now.getHourOfDay() >17) {
Displaytext.sendCommand("Guten Abend :) Temperatur im Bad: " + badtemp + "C Aussentemperatur: " + temperatur + "C Heute maximal: " + temperatur_max + "C Regenrisiko heute: " + regenrisiko + "% Wolkendichte heute: " + wolkendichte + "%")
}
else {
Displaytext.sendCommand("Hallo! :) Temperatur im Bad: " + badtemp + "C Aussentemperatur: " + temperatur + "C Heute maximal: " + temperatur_max + "C Regenrisiko heute: " + regenrisiko + "% Wolkendichte heute: " + wolkendichte + "%")
}
}
case OFF: {
Displaytext.sendCommand("")
}
}
end
Alles anzeigen
um das display aus dem sichtbereich zu bringen eignen sich glasplatten/glastüren etc. einfach eine klebefolie dahinter anbringen und darauf dann das led modul.
am besten also das handy mit in den baumarkt nehmen um mit der taschenlampe die durchsichtigkeit der folien zu prüfen.