Prefer english? This way!

Grilltemperatur in Zabbix

Grilltemperatur in Zabbix

Leider ist dieses Projekt noch nicht ganz fertig, aber ich berichte trotzdem vom ersten Probelauf. Die Elektronik wollte noch nicht ganz so wie ich wollte, aber man sieht wohin die Reise geht.

Vor knapp zwei Jahren habe ich mal einen Prototypen eines Grillthermometers gebastelt. Den habe ich auch hier vorgestellt, das war wirklich ein ganz krudes Projekt. Seitdem habe ich viel dazu gelernt, und ich will sowas jetzt nochmal in ‚ernsthaft‘ bauen.

Da ich mit dem Ding die Temperatur mehrerer Fleischstücke messen kann war der Name natürlich klar: Multimeater! :-D

Die Hardware

Die Hardware

Basis wird wie bei den letzten Projekten ein ESP8266-Modul, programmiert mit der Arduino-Software. WLAN ist somit vorhanden. Darauf kommt eine Firmware die — ebenfalls wie in mehreren meiner Projekte — auf dem Homie-Framework basiert. Das liefert die Messwerte per MQTT an meinen Broker, von da geht es weiter zu Zabbix. Gemessen wird mit zwei Hochtemperatur-Sensoren die jeweils an einem MAX6675 hängen, sowie vier normalen Einstichthermometern an einem MCP3208.

Sechs Temperaturen? Ja. Der Plan ist, mit zwei Sensoren die Innenraumtemperatur des Grills aufzunehmen. Unter bestimmten Umständen kann die so hoch sein dass die normalen Fleischthermometer das nicht mitmachen würden, also gibt es dafür zwei extra Fühler, jeweils am Ende des Grillraumes (der ist beim Smoker eher länglich, da gibt es tatsächlich ein Temperaturgefälle). Und mit vier Fleischthermometern kann ich die Kerntemperatur von eben bis zu vier Stücken überwachen.

Zabbix ist eigentlich ein Monitoring-System, damit überwacht man eigentlich Serversysteme. Das funktioniert aber nicht nur in großen Rechenzentren, ich erfasse damit zu Hause auch einige… eher ungewöhnliche Daten. ;-)

In diesem Fall habe ich mir damit nur die Temperaturverlaufskurven angesehen, aber wenn ich wirklich mal über Nacht ein Pulled Pork grillen möchte kann Zabbix mich auch aus dem Bett klingeln wenn die Temperaturen nicht so aussehen wie sie sein sollten.

Wie gesagt: das Heute war nur ein Probelauf. Und wie das so ist sind dabei einige Sachen schief gegangen. Ich habe ein Problem mit den Messwerten von den Innenraum-Fühlern gehabt, die waren leider unbrauchbar. Da ich aber eh nur drei Stücke Fleisch hatte konnte ich den vierten Fühler für die Pit-Temperatur benutzen. Der Fühler im Schinkenbraten war erst doof gesteckt, daher sieht die blaue Kurve sehr merkwürdig aus. Und als Krönung hat es zwischenzeitlich heftig geregnet, da der Grill zur Zeit nicht überdacht ist hat es das auch nicht einfacher gemacht.

Alles in allem war das aber schon sehr vielversprechend. Ich bleibe dran, und sobald das Ding wirklich funktioniert stelle ich es natürlich hier vor, mit Schaltplan und Firmware.

Oh, und da die Fragen kommen werden: die technischen Probleme haben dem Grill-Ergebnis keinen Abbruch getan, es hat hervorragend geschmeckt. :-D

Mit Begeisterung habe ich gerade gelesen dass der Hersteller Espressif einen Nachfolger für den ESP8266 — mit dem ich ja auch schon einiges gemacht habe — vorgestellt hat: den ESP32.

Im Gegensatz Zusätzlich zum 8266 hat das Ding

  • Bluetooth
  • Ethernet-Fähigkeiten
  • GPIOs für Touch-Sensoren
  • einen Hall-Sensor
  • … und vieles mehr

Neue Ideen was man damit umsetzen kann kommen noch während des Lesens. Allein die Möglichkeit damit stromsparende Anwendungen bauen zu können (Stichwort: Batteriebetrieb) eröffnet einen ganzen Strauss neuer Möglichkeiten.

Ich kann es kaum abwarten dass das Ding verfügbar ist. Man kann nur hoffen dass der Preis ähnlich attraktiv wird wie beim Vorgänger…

H801 WiFi im Gehäuse

H801 WiFi im Gehäuse

Ich weiß nicht mehr wie ich darauf gekommen bin, aber vor einiger Zeit habe ich mir vom Chinesen meines Vertrauens ein Modul zur LED-Steuerung schicken lassen. H801Wifi wird es genannt, man bekommt es für etwa neun Euro. Dazu gibt es eine App um per Telefon die Lampe zu steuern, aber die habe ich gar nicht erst ausprobiert.

Im Prinzip tut das Ding das gleiche wie mein Projekt IRlicht — von dem ich sicher war dass ich es veröffentlicht hätte (wird nachgeholt): es steuert über mehrere Kanäle die Helligkeiten von LED-Streifen. Meine selbstgebaute Steuerung macht das mit vier Kanälen: RGBW. Also drei bunte Farben und zusätzlich ein Kanal für weiß. Dieses Ding macht RGBWW, so könnte man tatsächlich nicht nur einen Weiß-Streifen anschließen, sondern beispielsweise einen warm- und einen kalt-weißen.

Mein Eigenbau wird per Infrarot-Fernbedienung gesteuert. In diesem Modul steckt ein ESP8266, also arbeitet es mit WLAN. Ich bastele schon länger an einer Firmware für kleine WLAN-Geräte, die kommuniziert auf der Basis von MQTT (hatte ich hier schon erwähnt). Dieses Modul wäre ein Paradebeispiel dafür. Fraglich war nur ob man die Firmware darauf zum Laufen kriegt…

Stellt sich raus: ja. Kriegt man. :-)

Programmier-Jumper gesetzt, serielle Schnittstelle angeschlossen

Programmier-Jumper gesetzt, serielle Schnittstelle angeschlossen

Ich bin nicht der erste der das versucht. Andreas Hölldorfer hat das auch schon gemacht und beschrieben. Dass es so einfach wäre hätte ich nicht vermutet. Fast schon enttäuschend… ;-)

Auf der Platine — dank hervorragender Fotos des Anbieters wusste ich das schon vor dem Kauf — befindet sich eine gut beschriftete serielle Schnittstelle. Und direkt daneben ist ein Anschluss der praktisch nach einem Jumper schreit. Setzt man den Jumper, kann man über die serielle Schnittstelle flashen. Direkt aus der Arduino-Umgebung heraus. Dazu habe ich einfach meinen USB-Seriell-Adapter zwischen Computer und Modul gehängt (ohne externe Stromversorgung, keine Ahnung ob das geschadet hätte) und in der IDE folgendes eingestellt:

  • Board: „Generic ESP8266 Module“
  • Flash Size: „1M (64k SPIFFS)
  • Upload Speed: „1152200“

Nachdem ich RX und TX richtig herum angeschlossen hatte konnte ich direkt flashen.

Ich hatte wie gesagt schon eine Firmware für meine Zwecke fertig, basierend auf dem exzellenten Homie for ESP8266 Framework. Naja, fast: bis jetzt kann die nur RGB, noch kein RGBWW. Aber das einzige was ich für RGB ändern musste waren die Pins. Das Header-File für „Generic ESP8266 Module“ kennt keine sprechenden Bezeichnungen für die Pins. Die Belegung hat Andreas Hölldorfer schon herausgefunden (er scheint aber eine andere Hardware zu haben, bei mir waren einiges Pins vertauscht). Folgendes funktioniert bei mir:

Pin Funktion
15 Ausgang rot
13 Ausgang grün
12 Ausgang blau
14 Ausgang weiß 1
4 Ausgang weiß 2
1 Interne LED grün / Signal
5 Interne LED rot / Power

Schön ist, dass nach dem initialen Flashen auch schon das OTA-Update (Over The Air) funktioniert. So konnte ich das Gehäuse direkt wieder veschliessen, alle weiteren Updates kommen durch die Luft. :-D

Die meisten Pins sind belegt

Die meisten Pins sind belegt

Den ESP8266 habe ich hier ja schon öfter erwähnt. Kurz zusammengefasst handelt es sich um einen Mikrocontroller den man frei programmieren kann. Im Vergleich zu Arduino & Co. ist er aber sehr leistungsfähig. Er rechnet deutlich schneller, hat mehr Speicher und das beste: er funkt im WLAN. Genauere Daten finden man überall im Netz, nicht zuletzt in der Wikipedia.

Ich habe hier schon verschiedene Boards ausprobiert um mit dem Ding zu spielen. Vorstellen möchte ich Heute eines das unter dem Namen Witty Cloud bekannt ist. Lustigerweise findet man es in den automatisch übersetzten chinesischen Shops auch gerne unter dem Namen Witzig Wolke:-D

Es handelt sich um einen ESP-12-F, mit auf der Platine ist ein USB-Anschluss mit dem man das Ding mit Strom versorgen kann, ein Tastschalter, ein LDR (lichtempfindlicher Widerstand) und eine RGB-LED. So hat man direkt etwas Hardware zum Spielen. Geliefert wird das Modul als Stapel aus zwei Platinen. Die untere enthält eine weitere USB-Buchse, mit der kann man nicht nur Strom liefern sondern dank des USB-Seriell-Konverters auch direkt programmieren. Weiterhin sind hier ein Reset- und ein Flash-Button untergebracht. Zum wirklichen Betrieb braucht man nur das obere Board, und nach einer initialen Programmierung kann man die Module bei Bedarf sogar OTA (Over The Air) mit neuer Software betanken.

Das untere Board wird nur zum Programmieren benutzt

Das untere Board wird nur zum Programmieren benutzt

So gestapelt kostet das Modul weniger als drei Euro, und um mit dem Programmieren anfangen zu können braucht man nur noch ein USB-Kabel und einen Compiler. Da empfehle ich die Arduino-IDE, damit ist man auch als Anfänger sehr schnell im Rennen. Wenn man die Erweiterungen für ESP8266 installiert hat wählt man im Board Manager am besten den WeMos D1-Mini aus, damit klappt alles auf Anhieb.

Leider findet man zu dem Witty kaum Dokumentation. Also habe ich das Bildchen da oben gemalt, schon allein damit ich selbst nachsehen kann was an welchem Pin angeschlossen ist. So hängt an dem Pin der mit GPIO13 beschriftet ist der blaue Kanal der RGB-LED, in der Programmierumgebung heißt der Pin D7.

Label Pin (Arduino) Funktion
REST Reset
ADC A0 Analoger Eingang, belegt mit LDR
CH_PD Chip Power-Down
GPIO16 D0 GPIO, frei benutzbar
GPIO14 D5 GPIO, frei benutzbar
GPIO12 D6 GPIO, grüner Kanal der RGB-LED
GPIO13 D7 GPIO, blauer Kanal der RGB-LED
VCC +5V Versorgungsspannung
TXD TX Serielle Schnittstelle
RXD RX Serielle Schnittstelle
GPIO5 D1 GPIO, frei benutzbar
GPIO4 D2 GPIO, belegt mit dem Tastschalter
GPIO0 D3 GPIO, verbunden mit dem Flash-Taster, nicht völlig frei benutzbar
GPIO2 D4 GPIO, belegt mit der blauen LED auf dem ESP-Modul
GPIO15 D8 GPIO, roter Kanal der RGB-LED
GND Masse

Falls jemand einen Schaltplan des Boards hat, oder falls mich jemand korrigieren oder ergänzen möchte: immer her damit!

Mein Fazit: ein echt interessantes Board. Wer mehr GPIO braucht sucht vielleicht lieber nach einem NodeMCU, wer sowieso einen LDR oder eine RGB-LED braucht sollte zugreifen. Ich habe mittlerweile einige davon hier, und eine Firmware mit der ich die Dinger hier im Haus verteilen möchte ist auch fast fertig.

Oh, das Bild habe ich übrigens mit einer Grafik aus diesem Projekt gemacht, das ist die Witty Cloud für Fritzing.

Meine Testschaltung

Meine Testschaltung

Vor ein paar Wochen las ich von einem sehr spannenden neuen Elektronik-Modul: dem ESP8266. Das Teil an sich ist unscheinbar: etwa in Größe einer Briefmarke, mit acht Pins zum Anschluss. Aber hier zählen die inneren Werte: gesteuert mit einfachen AT-Kommandos über die serielle Schnittstelle des Arduinos verbindet sich das Modul zum WLAN.

WLAN-Shields für Arduino habe ich schon öfter gesehen, in der Regel sind die Dinger aber so teuer dass es kaum Spaß macht sich dafür Spielereien auszudenken. Hier spielt der ESP8266 seine größte Stärke aus: das Ding ist echt preiswert. Ich habe direkt mehrere bestellt, zum Stückpreis von etwa 3,50 Euro!

Wie üblich bei Chinaware hat die Lieferung knapp drei Wochen auf sich warten lassen. In der Zeit habe ich mir interessiert Beispielprojekte wie die Wetteranzeige auf zeflo.com angesehen. Auf der Basis habe ich dann auch meinen ersten Test aufgebaut. Den Code kann ich bei Bedarf posten, aber der ist in praktisch der gleichen Form auch an anderen Stellen zu finden. weiterlesen

Die Schaltung, so wie sie zwei Jahre lief

Die Schaltung, so wie sie zwei Jahre lief

Eigentlich würde es deutlich mehr Sinn machen, Projekte zu veröffentlichen direkt nachdem sie fertiggestellt wurden. In diesem Fall war ich mir sicher das getan zu haben. Vor zwei Jahren, als ich es gebaut habe. Dass das nicht so ist fiel mir erst kürzlich auf. Komischerweise drei Tage bevor ich das Ding durch etwas anderes ersetzt habe. Egal, ich liefere schnell nochmal nach…

Anfang 2014 haben wir das Wohnzimmer umgebaut. Dabei hat eine Wand eine steinige Struktur bekommen, und ich dachte dass da ein Streiflicht gut aussehen würde. LED-Streifen boten sich an. Beim Rumalbern habe ich den Töchtern gesagt dass wir eine rosa Lampe einbauen würden. Der Plan war eigentlich warm-weiß, aber die bestanden jetzt auf rosa… zwei gegen einen… ich stand unter Zugzwang. :-)

Ein einfacher RGB-Streifen kann theoretisch auch weiß leuchten. Praktisch ist das alles andere als gemütlich. Also habe ich neben den RGB- auch noch einen warm-weißen Streifen geklebt. In Kombination ließ sich das aber dann nicht mehr mit dem Steuergerät bedienen das bei dem RGB-Streifen dabei war. Eine fertige RGBW-Steuerung habe ich damals nicht gefunden. Also musste ich selbst was bauen.

So funktioniert das

So funktioniert das

Ich glaube das war das erste Mal dass ich ernsthaft was mit einem Arduino gemacht habe. Und es war erstaunlich einfach. Den ersten Prototypen habe ich mit einem Arduino Uno gebaut, und mit der hervorragenden Infrarot-Empfänger-Bibliothek von Ken Shirriff konnte ich schon nach knapp zwei Stunden eine RGB- und eine weiße LED steuern. Mit der Logitech Harmony Fernbedienung mit der ich auch die Medienwiedergabe kontrolliere.

Den zweiten Prototypen habe ich mit MOSFETs gebaut, um zu auszuprobieren wie ich mit dem Arduino die Streifen ansteuern kann, die ja immerhin mit 12V versorgt werden.

Der finale Aufbau ist oben auf dem Foto zu sehen: ein Arduino Pro Mini (der ohne USB-Interface), und eine Lochrasterplatine auf der die Ansteuerung verdrahtet ist. Am Arduino hängt ein Infrarot-Empfänger. Ursprünglich ein TSOP31238, den habe ich aber kurz vor Projektende durch falsche Verdrahtung frittiert. Da ich fertig werden wollte habe ich einen alten DVD-Player zerlegt — keine Ahnung was das für ein Empfänger ist, aber er funktioniert. :-D

Das heißt: er hat funktioniert. Ziemlich genau zwei Jahre lang. Bis Heute Morgen. Seitdem ist die Schaltung obsolet — wie gesagt. Sourcen und was man so für das Projekt braucht habe ich Heute unter dem Namen IRlicht veröffentlicht.

Oh, und falls sich jemand fragt: die Lampe ist bis Heute praktisch ausschließlich in weiß zum Einsatz gekommen. Bunte Farben — insbesondere Farbwechsel — sind praktisch nur zum Ausprobieren und zum Vorzeigen zu sehen gewesen. So selten dass ich letztens schon in den Sourcen nachsehen musste welche Tasten zu drücken sind…

Gestern habe ich auf Twitter gelesen dass es im Zabbix-Share ein Modul gibt mit dem man das Monitoring-Tool meiner Wahl — Zabbix — direkt auf einen Arduino zugreifen lassen kann: Zabbuino nennt sich das.

Komischerweise habe ich letzte Woche erst überlegt wieviel Aufwand es wohl sein mag, das Zabbix-Protokoll nachzuimplementieren. Ich bastele zur Zeit wieder mal mit dem WLAN-fähigen Chip ESP8266 herum, den hatte ich hier auch schon erwähnt. Damit lassen sich prima Messwerte einsammeln, und das schreit dann nach Zabbix. Mein erster Ansatz war, Messdaten per HTTP zur Verfügung zu stellen. Die werden dann von einem Skript periodisch abgeholt und per zabbix_send eingespeist. Wesentlich eleganter wäre es natürlich, Zabbix direkt auf den Sensor zugreifen zu lassen…

Es wäre also wirklich mal einen Versuch wert, das Zabbuino-Modul in Verbindung mit einer kleinen ESP8266-Platine zu testen, die kann man auch fuer deutlich unter fünf Euro kaufen. Oder hat das schon jemand ausprobiert?

Da ich das letzte Woche aber noch nicht kannte habe ich schon einen dritten Weg eingeschlagen. Noch viel besser, wie ich finde. Das ist aber eine andere Geschichte, und die soll ein anderes Mal erzählt werden…

Nachgemessen

Nachgemessen

Vor einer Weile hat mich jemand auf WeMos aufmerksam gemacht. Das sind kleine Entwicklungsplatinen, ähnlich wie Arduino. Im Gegensatz zu dem befindet sich darauf allerdings kein kleiner AVR-Controller, sondern der deutlich schnellere ESP8266 — mit dem ich ja in anderer Bauform auch schon rumgespielt habe. Dementsprechend funken die kleinen auch im WLAN. Da die WeMOS-Boards direkt per USB an den Rechner angeschlossen werden können entfällt das Gefummel mit RS232-Konvertern und 3,3V Versorgungsspannung, und programmiert wird komfortabel über die Arduino-IDE.

Sehr interessant ist die Mini-Variante. Dabei muss man zwangsläufig an das Buzzword Internet of Things denken. :-)

Für den Mini gibt es auch direkt ein Shield mit einem DHT22. Das ist ein Sensor mit dem man digital Temperatur und Luftfeuchtigkeit auslesen kann. Solche Messknoten will ich schon seit langem im Haus verteilen, und diese Boards sehen so aus als ob sie dafür gemacht sind. Der Wemos und das Shield kosten jeweils rund 4,50 Euro, so ist das auch ein bezahlbarer Spaß.

Abweichung je nach Anordnung

Abweichung je nach Anordnung

Die Programmierung war — Arduino-typisch dank der vielen Bibliotheken — nicht allzu schwer, so hatte ich nach kurzer Zeit einen funktionierenden Messknoten, samt der Messwerte im Zabbix.

Aber die Temperaturen waren verblüffend. Im Wohnzimmer ist es warm, aber nicht über 28°C. Nanu?

Das Infrarot-Thermometer hat mir dann verraten dass der WeMos stellenweise bis zu 32°C warm wird, und die Temperatur im DHT etwa 7°C über Raumtemperatur. Und richtig genug: wenn ich mein Platinen-Sandwich senkrecht positioniert habe waren es dank der Luftzirkulation nur noch 5°C zu viel. Mit dem Shield direkt neben dem WeMos — also nicht als Sandwich — waren es nur noch 2°C. Vielleicht hätte ich für den Versuch auch dünnere Drähte nehmen sollen. Vernünftige Werte habe ich erst bekommen als ich den Sensor thermisch komplett von dem WeMos entkoppelt habe, durch etwa 10cm Draht. :-(

Also: gute Idee, leider nicht ganz zu Ende gedacht. Von den WeMos-Boards werde ich mir wohl noch ein paar zulegen, aber die Sensoren kommen dann wohl in freier Verdrahtung zum Einsatz. Und vielleicht durch ein Gehäuse vom ESP getrennt…

Oh, eine andere Möglichkeit wäre vielleicht, die Sensoren aktiv zu machen. Bei mir werden die zur Zeit passiv abgefragt, per HTTP. Dazu müssen sie natürlich durchgehend im Netz sein. Wenn die sich beispielsweise nur alle fünf Minuten aktivieren und dann zum Beispiel per MQTT ihre Werte abliefern hätten sie vielleicht gar keine Zeit um sich aufzuheizen… und vielleicht würde diese Variante eh mehr Sinn machen. Schon allein wegen des Stromverbrauches (der im Moment übrigens bei 70mA am USB-Port liegt). Mal sehen…

Krustenbraten im Zabbix

Krustenbraten im Zabbix

Ich schrieb ja schon dass ich mich seit etwas über zwei Wochen intensiv mit dem ESP8266 auseinander setze. Das ist ein WLAN-Modul mit dem man sehr einfach — und vor allem preiswert — eigene Mikrocontroller-Basteleien ins WLAN bekommt.

Gestern lief praktisch ein Proof of Concept für eine der Sachen die ich damit umsetzen möchte: ich habe den Sensor eines elektronischen Fleischthermometers an einen Arduino Nano angeschlossen (ein sogenannter Thermistor, Lady Ada zeigt wie das geht). Zusätzlich den ESP8266 und eine kleine Firmware. Die Firmware hat sich mit meinem WLAN verbunden und alle paar Sekunden die aktuelle Temperatur per HTTP als GET-Parameter an ein kleines Skript geschickt. Dieses Skript hat die Werte jeweils an Zabbix weitergereicht. Mit Zabbix monitore ich hier eigentlich mein ‚Rechenzentrum‘, also meinen Server und die virtuellen Maschinen die darauf laufen.

Wie sich zeigt taugt Zabbix aber auch zur Überwachung eines Krustenbraten. :-D

Der Braten war etwa zweieinhalb Stunden im Grill, bei rund 150°C (in einer nächsten Version will ich auch die Garraumtemperatur überwachen, dann gibt es einen neuen Graphen). Ich hatte einen Trigger gesetzt der bei 75°C Kerntemperatur auslöst. Dem Ergebnis nach würde ich sagen dass ich den beim nächsten Mal eher drei Grad niedriger ansetzen sollte. Oder ich muss das Thermometer nochmal ordentlich kalibrieren. Aber auch wenn er nicht optimal war: geschmeckt hat er. Der WLAN-Krustenbraten. :-)