Day 9: A Mood Light

There is a photo transistor hidden behind the door today. We will use it to measure the ambient brightness. The potentiometer is in series with the phototransistor potentiometer in our circuit and you will be able to change the sensor sensitivity with the potentiometer. In this circuit the reading value will increase when dimming the sensor.

Versuchsaufbau

Todays Circuit

You will see this happening today in our user interface within the gauge element. But again, you first import and start today’s flow in your Node-RED environment and of course, you have to disable the one from yesterday. Also, do not forget to enable today’s program on the configuration page and adjust the IP of the UDP send node.

We will use the on-board LED again and in addition, we will display the measured values. The LED should automatically adapt its colour to the light conditions dependent on the measured value. In full darkness, the LED is supposed to glow red. The colour will change from green to blue in line with increasing brightness. Illuminate your work area in the evenings with a relaxing red, for example, while a strong blue light is lit during the day.

Der heutige Flow

Todays Flow

The range node converts measured values ranging  from 0 to 4095 to a range of 240 to 0. This will send the desired LED colour in what is called HSV format. HSV stands for Hue, Saturation and Value, the latter being the brightness value. It is an alternative representation to the RGB model. The HSV model represents the colour hue by an angle of 0° to 360°. Red is 0°, green is 120° and blue is 240°. The reading is thus converted into a value up to 240 here, and covers the entire colour palette from red to blue. The following template node is used to compile the command, which is then sent to the board. For a medium value, the command would be:

{"cmd":"set_rgb_hsv","value":"hsv(120, 100%, 100%)"}

The percent signs after saturation and brightness could also be omitted. The board changes the colour accordingly and returns the same values  with the command get_rgb_hsv as confirmation. Node-RED receives this message, too, and represents it on the interface web page by means of the colour picker. That way you are able to always track the colour the board is currently revealing.

48 Comments

  1. paulaner

    Test Phototransistor und LED.
    Wer nur die LED testen will, Phototransistor brücken.
    Ansonsten leuchtet die LED bei Lichteinfall, bei Verdunklung wird die LED auch dunkler.

    Reply
    1. paulaner

      sorry, der Phototransistor gehört umgepolt, Emitter/langes Bein nach GND/Minus.

      Reply
      1. paulaner

        hier das richtige Bild.

        Reply
  2. Edwin

    Hallo,

    ich weiß nicht, ob es so gut ist wenn das Poti auf Anschlag bei 3,3V steht und der Phototransistor volles Sonnenlicht erhält.
    Wäre es da nicht besser gewesen den Phototransistor an dem freien Poti-Anschluss und GND anzuschließen?
    Bei mir ist es auch so, dass bei Dunkelheit die Spannung am Analogeingang am Höchsten ist und in der Sonne am Niedrigsten.

    Reply
    1. paulaner

      Hallo,

      das was du vorschlägst ist auch meines Wissens die bessere Alternative, diese haben hier auch schon einige vorgeschlagen.

      Ich hab es mal so geändert, auch den Flow.
      – freies Ende Poti -> Phototransitor kurzes Bein, Kathode
      – langes Bein Phototransistor GND, Emitter
      – Schleifer an Pin 35
      – anderes Ende Poti an Plus

      Reply
      1. paulaner

        falsches Bild

        Reply
        1. paulaner

          noch besseres Bild und ein afgräumter Flow

          Reply
    2. paulaner

      Hallo @all,
      nach ein paar mal probieren die 'Endlösung'.

      Zitat:
      'Bei mir ist es auch so, dass bei Dunkelheit die Spannung am Analogeingang am Höchsten ist und in der Sonne am Niedrigsten.'

      Wenn ich es nach meinem ersten Beitrag gemacht habe, ok.

      Beim zweiten mal habe ich den Phototransistor in die Pluleitung plaziert,
      Dunkel = kleiner Wert, Helll = großer Wert.

      Flow wie nach meinem letzten geposetet

      Reply
  3. Benzo

    Irgendwie scheint es bei mir nicht so recht funktionieren zu wollen. Ich habe nun alles richtig aufgebaut, nachdem ich zuvor 2 mal einen kleinen Fehler gemacht hatte und jetzt leuchtet die RGB-LED nicht mehr durchgehend grün, sondern nur ganz schwächlich in den 3 Farben. Aus- und wieder einschalten bringt nichts, ebenso wenig ein erneutes Aktivieren des Programms von Tag 9. Die RGB-LED ist auf jeden Fall nicht kaputt, da beim Aktivieren des Tagesprogramms kräftig grün geblinkt wird, um danach wieder in diesen Dämmerzustand zu gehen. Die Messung der Helligkeit im UI funktioniert aber die LED reagiert nicht drauf. Jemand ne Idee?

    Reply
    1. Benzo

      Jetzt kam bei mir gerade zum ersten Mal die "Unexpected number in JSON at position 36" Fehlermeldung. Seitdem wird nichts mehr gesendet. Anfangs kam immer noch "{"cmd":"get_adc_state","Light":3623}" aber das auch nur ein paar Sekunden lang und dann war komplette Funkstille bis eben die Fehlermeldung kam.

      Reply
  4. Patrick

    Hallo,
    bei mir leider auch "Unexpected token { in JSON at position 36"
    LED auf dem board leuchtet rot, auf dem Dashboard steht die brightnss ständig auf 4095 und das Farbrad auf Rot. Das Poti oder der Fototransistor haben keinen Einfluss.
    Vielleicht hat ja jemand schon eine Lösung..
    LG
    Patrick

    Reply
    1. paulaner

      Check noch mal deine Verdrahtung, ich habe mich auch schon mal um einen Pin vermacht und dann gewundert.
      Mal neu stecken, Wackelkontakt.
      Poti mal mittig stellen.
      Phototransistor verkehrt herum.
      Programm übertragen Tag 9 in den NodeESP
      deployen

      was vergessen?!

      Reply
    2. paulaner

      und schei…. auf den "Unexpected token { in JSON at position 36" Bug, es geht trotzdem.

      Bei mir ist es nicht nur position 36, auch 0, 34, 35

      Reply
      1. Patrick

        Hi paulaner,
        tja, was soll ich sagen… zweimal die Verdrahtung neu gemacht, Phototransistor gedreht programm neu geladen….
        Kein Erfolg.
        Tag 10 Probiert… auch nix
        Dabei hatte ich so gut aufgeholt (von tag 5 bis 9)
        Morgen werde ich mal die Spannung an Pin 35 messen. Heute muss ich das board ersteinmal zur Seite legen´.

        LG
        Patrick

        Reply
        1. paulaner

          Hallo,

          man macht nicht alles mit einemmal, dann findet man nie den Fehler.
          Es ist zwar Mühsam aber Schritt für Schritt.
          Z.B. es war ein Wackler, jetzt hast du den Phototransistor gedreht, ja woran hat es gelegen, wenn es funktioniert oder auch nicht. Ausschlußverfahren!

          Ich meinte auch nicht du sollst den Phototransistor drehen, überprüfen!!!, es könnte doch sein du steckst ihn immer verkehrt rein, z.B.. Ich hätte wohl ein Fragezeichen setzen sollen.

          Es sind/waren nur Punkte die man überprüfen kann.

          Haben denn die anderen Tagesprogramme funktioniert?

          Prinzipiell braucht man wenn das Tagesprogramm, hier Tag 9 auf dem NodeESP ist, nur eine Spannung fürs Board und den Node-Red Server (meist über cmd/shell gestartet). Schon kann man den Phototransistor bedecken und die RGB-LED auf dem Board ändert die Farbe.(versuch den Poti in der Mitte).

          Mach ein Foto mit deinem Handy von deiner Schaltung, wo man was sieht, und poste es.

          Reply
          1. Patrick

            So, nun habe ich die Spannung an 35 gemessen.
            Wie andere im Forum schon erkannt haben, ist der Schaltungsaufbau für’n A…
            Umgebau, geht…
            Mit dem unexpected token lebe ich dann mal

    3. paulaner

      Hallo,

      null Reaktion aufmeinen Vorschlag? Montag, der 10. Dezember 2018 um 22:44.

      Aber hier das gleiche Posten, wenn sich nichts geändert hat, weis es doch ein jeder, warum wiederholen?

      Reply
      1. paulaner

        Streich den letzten Satz und nimm dafür meine Entschuldigung an.

        Erster Satz. Ich denke du hast noch keine Zeit gehabz, sorry.

        Reply
  5. Andreas

    Handelt es sich bei dem Bauteil um einen npn- oder pnp-Foto-Transistor?

    Eine kurze Internetsuche sagt mit, dass das kurze Bein der Emitter ist. Und irgendwie kann ich mit der sich ergebenden Schaltung nichts anfangen (Annahme: npn).

    Reply
      1. paulaner

        Vcc ist der Pin 35 des NodeESP !
        PWM halt.

        Reply
        1. paulaner

          Quatsch mit Soße.

          Vout geht zum Pin 35 des NodeESP.

          Reply
          1. paulaner

            nimm die linke Schaltung.
            Rc ist in dem Fall das Poti.

      2. paulaner

        Das ist aber das Wichtigste
        Weil es sich beim Fototransistor um ein Bauteil mit drei Anschlüssen handelt, gibt es mehrere Anschlussmöglichkeiten. Die gängigsten sind CE-Verstärker (Common Emitter) und CC-Verstärker (Common Collector) (Abbildung 3). Bei der CE-Konfiguration bewirkt Licht, dass der Ausgang von einem hohen Zustand in einen niedrigen Zustand schaltet. Bei der CC-Konfiguration erfolgt der Zustandsübergang in umgekehrter Richtung.

        Diagramm vom Fototransistor, der per CE- oder CC-Konfiguration angeschlossen werden kann

        Abbildung 3: Der Fototransistor kann wie ein normaler Transistor per CE- (links) oder CC-Konfiguration (rechts) angeschlossen werden. (Bildquelle: ON Semiconductor)

        Reply
      3. Andreas

        Wenn das wie in der Abbildung ist, müsste das kurze Bein (Emitter) aber doch nach rechts gehen, oder?

        Ich hab mal mit meinem Multimeter durchgemessen, der Durchgang geht vom kurzem Bein zum langen Bein.

        Reply
        1. paulaner

          schau mal in das Begleitheft, Seite 18, Bild.
          Da steht "Phototransistor: Short leg left", kurzes Bein links.

          Reply
        2. paulaner

          hie mal noch die Ersatzschaltung

          Reply
          1. paulaner

            nach ein Bild, das kurze Bein ist der Collektor und gehört an Plus.

          2. Andreas

            Ah, kurzes Bein ist also der Kollektor? Diese Info hat mir gefehlt.

            Meine Internetsuche hat halt ergeben, dass das der Emitter ist. Daher meine falsche Schaltung.

            Danke für die Informationen

          3. paulaner

            und noch Eins.
            f.k. hat es doch auf seinem Bild gezeigt, "short leg left". kurzes Bein links, also an Plus.

  6. jue

    Der ESP flutet das Netz mit UDP-Meldungen und man kann mangels Quellcode nichts dagegen tun. Bin jetzt zurückgegangen auf das Programm von Tag 7, da sendet er nur, wenn man den Knopp drückt.
    Da hier offensichtlich so einige mit Vorkenntnissen unterwegs sind, wird es wirklich langsam Zeit, die Quellen des Codes für den ESP bereitzustellen. Ansonsten vergeht zumindest mir schon langsam der Spaß.

    Reply
    1. Marco

      Dem stimme ich zu, die Programmierung ist eigentlich nur serverseitig.
      Gut, node-red habe ich vorher nie genutzt, mal was neues.
      Beim IOT kommts aber nicht nur auf den Server an, vor allem weil man bei Problemen dem Client auch etwas "Intelligenz" geben sollte.
      Ein Einblick wie das ganze zusammen mit FreeRTOS läuft wäre klasse.
      Vor allem langweilt sich der Micro-SD-Slot…

      Reply
  7. Heinz

    Hallo Zusammen,

    Bei mir funktioniert das heutige Script, habe aber auch den Error "Unexpected number in JSON at position 36"
    Der ESP sendet viel zu schnell die UDP Packete. Mein Browser kommt fast nicht mit. Ich musste den Debug Node abhängen, sonnst blokiert es alles mit so vielen Meldungen.

    Auch das ganze Netzwerk bei mir wird regelrecht überflutet mit den Meldungen.
    Es wäre schön, wenn wir den sende Rythmus per Kommando einstellen könnten. (Auf z.b. alle 1sek eine Meldung)

    Gruss und schönen Sonntag
    Heinz

    Reply
  8. Justus

    Bei mir leuchtet die onboard LED leider nur in einem sehr dunklen grün und die farbe lässt sich auch nicht umstellen. :(
    Es ist nach mehrmaligen überprüfen alles richtig gesteckt. UDP und Port sind korrekt eingestellt. Kann es sein, dass mein Board kaputt ist? Die onboardLed hat auch noch nie gelb geleuchtet.. (beim boot oder bei den ersten Tagen). Und das Treppenhauslicht hat auch nur einmal kurz funktioniert, obwohl ich nichts verändert hat.

    Reply
    1. paulaner

      zeig uns doch deine Debugmeldungen.

      Reply
    2. thomas

      dreh mal am Poti. bei mir funktionierst

      Reply
  9. Jens

    Bei mir bleibt die LED einfach ROT und die Node-RED UI zeigt den Wert 4095 an. Sporadisch erscheint die Meldung "Unexpected token { in JSON at position 36" im Node-RED Debug. Ich habe den Aufbau mehrfach geprüft, die IP-Adresse bei der letzten Node im Flow geändert und auch schon alles neu gestartet.

    Ist evtl. der Fototransistor defekt?

    Reply
    1. Jens

      Nachdem ich den Poti entfernt und erneut eingesetzt habe, funktioniert es jetzt.

      Reply
  10. Frank

    Der Json-Fehler kommt offenbar daher dass der Nodeesp ab und zu falsches Json sendet, z.B.:
    {"cmd":"get_adc_state","Light":3895}get_rgb_hsv","value":"hsv(10,100,100)"}
    Der Teil nach der schließenden Klammer kommt noch aus dem Paket vorher.

    Reply
    1. Bernd

      Stimmt. Habe ich jetzt auch gesehen. Fehler im Programm im NodeESP Day9. Könnte der Autor fk mittels eines Firmware-Updates beheben…

      Reply
    2. paulaner

      Auch ich hab es bei ca. 100 Übertragungen 1x dabei.

      Reply
  11. Taraxacum

    Klappt. Nur müßte es bei Brightness Values eher 'Darkness Values' heißen, weil der Ausschlag höher ist, je stärker der Fototransistor verdunkelt wird.
    Und der Debugger meldet:msg : string[41]
    "Unexpected token { in JSON at position 36"
    Hab dazu hier etwas gefunden: https://daveceddia.com/unexpected-token-in-json-at-position-0/, weiß aber nicht, was ich in meinen Einstellungen ändern soll.

    Reply
    1. paulaner

      Hier mal meine Änderung:
      Sind bei Tag 10 und konnen da Anleihen nemen.

      Reply
  12. Stefan

    Guten Tag

    Wenn ich das Poti ganz nach Rechts drehe, mache ich doch ein Kurzschluss zwischen GND und 3.3 Volt, oder sehe ich da etwa falsch?

    Reply
    1. thymjan

      Da ist doch noch der Phototransistor dazwischen.

      Reply
      1. Marco

        Ein Phototransistor verträgt trotzdem keine zu hohen Ströme, man hätte zum Schutz einen Widerstand vorsehen sollen (der 1k-Widerstand der LED wäre ausreichend).

        Reply
  13. wildi

    Guten Morgen
    Es funktioniert. Irritierend ist die Meldung "Unexpected number in JSON at position 36", die ich im debug-Fenster erhalte. Kommt vom Board ab und zu eine falsche JSON Meldung? Was ist die Ursache und wie kann ich Meldung loswerden?
    Vielen Dank und einen schönen Sonntag
    Gérard

    Reply
    1. _marc_

      Hier ein Hinweis, falls die Schaltung nicht auf Anhieb klappt.
      Das Drehpoti hat in der Heft-Zeichnung eine Größe von 5×6 Rasterpunkten.
      Mein geliefertes Poti hat aber eher das Rastermaß 5×7. Wer es so einsteckt und dann von dort (stumpf & doof wie ich)
      weiter zählt baut die Schaltung falsch auf. Also die Beinchen etwas zusammen drücken, oder den Aufbau anpassen.
      Gibt dann auch nur selten JSON-Fehlermeldungen.

      Reply

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.