NEWS
Mini-Mülltonne Gadget
-
Moin zusammen,
hier mal wieder ein kleines Hardware-Gadget von mir:
Eine Mini-Mülltonne, die durch farbiges Pulsieren daran erinnert, daß am nächsten Tag eine Mülltonne geleert wird.
Die Farbe ist dabei unseren Original-Mülltonnendeckelfarben nachempfunden.Warum das Ganze?
Nun, eine Erinnerung könnte ich mir auch per eMail, Push-Nachricht, oder was auch immer schicken lassen.
Dann schaue ich auf's Handy - aha, morgen wird Biomüll abgeholt - und 'ne Stunde später habe ich es doch wieder vergessenAlso musste was ähemmm... "idiotensicheres" her.
So ist dann die Mini-Mülltonne entstanden, die einen Tag vor der Müllabholung permanent in der Eßecke pulsiert.
Das ist kaum zu übersehen. Einen Reset-Button - wenn die Tonne rausgestellt wurde - habe ich bewußt nicht vorgesehen, denn um Mitternacht hört das Blinken sowieso auf.Notwendig sind dazu der Google-Kalender, die iCal-/MQTT-Adapter in ioBroker, sowie ein WEMOS D1 mini und ein WS2812B LED-Stripe.
Ein kurzes Youtube-Vido habe ich hier hochgeladen: https://www.youtube.com/watch?v=qHmuvpSA8mkt
Eine Beschreibung / Bauanleitung gibt's hier: http://arduino.joergeli.de/mini-muelltonne/mini-muelltonne.php
Gruß
Jörg -
@joergeli cooles Teil
-
@joergeli sauber gemacht!
Werde ich nachbauen, nur bei uns gibts ne schwarze Tonne, welches Signal/Farbe nehm ich da?? -
@ilovegym
.... na, die schwarze FarbeNee, im Ernst:
Restmülltonne ist bei uns Original auch schwarz, deshalb verwende ich dort "orange".Bei mir:
Gelber Sack / Gelbe Tonne: gelb
Papiertonne: blau
Restmüll: orange ( Original = schwarz)
Bio-Abfall: grün (Original = braun) -
@ilovegym ich nutze dafür den Homematic Schaltaktor mit Signal-LED.
so schwarz wie möglich ist da violett.
gelb ist gelb, blau ist blau, und für die braune Tonne nehme ich grün(schnitt) -
@homoran
Tja, die Geschmäcker sind hat verschieden.Wie ich unter ioBroker Mini-Mülltonne ganz unten auf der Seite erwähnte, kann - wer weiß was er macht - die Farben durchaus an das eigene Gusto anpassen.
Allerdings sind dabei einige Änderungen sowohl im Javascript, als auch im Arduino-Sketch erforderlich:
Im JS können folgende Farben eingetragen werden:
red, green, blue, tuerkis, violet, yellow, orange, white und off.
( nur exakt diese Farbnamen verwenden ! )Diese Farben müssen allerdings mit den Farben im Arduino-Sketch korrespondieren:
if (ColorName.equals("red")) { leds[LedIndex] = CRGB( 255, 0, 0); } if (ColorName.equals("green")) { leds[LedIndex] = CRGB( 0, 255, 0); } if (ColorName.equals("blue")) { leds[LedIndex] = CRGB( 0, 0, 255); } if (ColorName.equals("tuerkis")) { leds[LedIndex] = CRGB( 0, 255, 255); } if (ColorName.equals("violet")) { leds[LedIndex] = CRGB( 255, 0, 255); } if (ColorName.equals("yellow")) { leds[LedIndex] = CRGB( 255, 110, 0); } if (ColorName.equals("orange")) { leds[LedIndex] = CRGB( 255, 40, 0); } if (ColorName.equals("white")) { leds[LedIndex] = CRGB( 255, 255, 255);} if (ColorName.equals("off")) { leds[LedIndex] = CRGB( 0, 0, 0); } //__________ Gelber Sack gelb blinken ________________________ if ( LedIndex == 0 && ColorName.equals("yellow")) { Data[7] = payload[0]; //y Data[8] = payload[1]; //e Data[9] = payload[2]; //l } else if ( LedIndex == 0 && ColorName.equals("off")) { Data[7] = payload[0]; Data[8] = payload[1]; Data[9] = payload[2]; } //__________ Papiertonne blau blinken ________________________ if ( LedIndex == 1 && ColorName.equals("blue")) { Data[10] = payload[0]; //b Data[11] = payload[1]; //l Data[12] = payload[2]; //u } else if ( LedIndex == 1 && ColorName.equals("off")) { Data[10] = payload[0]; Data[11] = payload[1]; Data[12] = payload[2]; } //__________ Restmuell orange blinken ________________________ if ( LedIndex == 2 && ColorName.equals("orange")) { Data[13] = payload[0]; //o Data[14] = payload[1]; //r Data[15] = payload[2]; //a } else if ( LedIndex == 2 && ColorName.equals("off")) { Data[13] = payload[0]; Data[14] = payload[1]; Data[15] = payload[2]; } //__________ Biomuell gruen blinken ________________________ if ( LedIndex == 3 && ColorName.equals("green")) { Data[0] = payload[0]; //g Data[1] = payload[1]; //r Data[2] = payload[2]; //e } else if ( LedIndex == 3 && ColorName.equals("off")) { Data[0] = payload[0]; //o Data[1] = payload[1]; //f Data[2] = payload[2]; //f }
Zusätzlich müssen im Sketch auch noch diese Code-Zeilen angepasst werden:
// __________ Gelber Sack - gelb pulsieren ____________________________ if( Data[7] == 'y' && Data[8] == 'e' && Data[9] == 'l'){ if (currentMillis - previousMillis < 2500 ) { leds[0] = CRGB( 255, 110, 0); leds[4] = CRGB( 255, 110, 0); for ( i=0; i<=220; i++){ delay(6); FastLED[0].show(leds, 1, i); FastLED[4].show(leds, 5, i); } for ( i=220; i>0; i--){ delay(6); FastLED[0].show(leds, 1, i); FastLED[4].show(leds, 5, i); } } } // __________ Papiertonne - blau pulsieren ____________________________ if( Data[10] == 'b' && Data[11] == 'l' && Data[12] == 'u'){ if (currentMillis - previousMillis < 2500) { leds[1] = CRGB( 0, 0, 255); leds[5] = CRGB( 0, 0, 255); for ( i=25; i<=220; i++){ delay(6); FastLED[1].show(leds, 2, i); FastLED[5].show(leds, 6, i); } for ( i=220; i>25; i--){ delay(6); FastLED[1].show(leds, 2, i); FastLED[5].show(leds, 6, i); } } } // __________ Restmuell - orange pulsieren ____________________________ if( Data[13] == 'o' && Data[14] == 'r' && Data[15] == 'a'){ if (currentMillis - previousMillis < 2500) { leds[1] = CRGB( 255, 40, 0); leds[5] = CRGB( 255, 40, 0); for ( i=25; i<=220; i++){ delay(6); FastLED[2].show(leds, 3, i); FastLED[6].show(leds, 7, i); } for ( i=220; i>25; i--){ delay(6); FastLED[2].show(leds, 3, i); FastLED[5].show(leds, 7, i); } } } // __________ Biomuell - gruen pulsieren ____________________________ if( Data[0] == 'g' && Data[1] == 'r' && Data[2] == 'e'){ if (currentMillis - previousMillis < 2500) { leds[1] = CRGB( 0, 255, 0); leds[5] = CRGB( 0, 255, 0); for ( i=25; i<=220; i++){ delay(6); FastLED[3].show(leds, 4, i); FastLED[7].show(leds, 8, i); } for ( i=220; i>25; i--){ delay(6); FastLED[3].show(leds, 4, i); FastLED[7].show(leds, 8, i); } } }
Bei diesen Anpassungen ist zu beachten, daß in der ersten Zeile der entspr. if-Abfrage jeweils die ersten 3 Buchstaben der Farbe eingetragen werden.
Beispiel für Gelb = yellow: if( Data[7] == 'y' && Data[8] == 'e' && Data[9] == 'l'){ ..........Zusätzlich müssen auch noch die CRGB-Werte für die Farbe angepasst werden.
Als Beispiel: gelb = yellow --> CRGB( 255, 110, 0)Das klingt alles kompliziert, ist aber historisch gewachsen, weil ich auf meinem LED Status-Display auch andere, bzw. mehr Farben verwende.
Mein Ehrgeiz bestand dort darin, daß wichtige Stati blinkend angezeigt werden.
Das "Blinken" war aber nicht so einfach zu programmieren, deshalb der rel. aufwändige Code, der in Teilen ebenfalls bei der Mini-Mülltonne verwendet wird.Deshalb mein Vorschlag:
Wer die Mini-Mülltonne nachbauen will, sollte erst mal meine Originale des JS und des Arduino-Sketch testen.
Wenn das dann wie gewünscht funktioniert, können evtle. Farbanpassungen immer noch vorgenommen werden. -
@joergeli
ihr kommt auf ideas... einfach herrlich. da fällt mir doch gleich was für iQontrol ein...