Day 24: Fire alarm for the Christmas tree

The final project consists of several elements you have been introduced to in the course of the advent time. One function is the Cheerlights function presented the day before. You can also receive the current colour of the Cheerlights project and display it with the RGB-LED. The board is also used for long-term monitoring of the temperature. At the same time, the board is used to emit an alarm sound when the temperature exceeds a specific value, e.g. because there is a fire. As a last function, the board can be used as a Christmas bell, by making it play the song Jingle Bells with a time-controlled TalkBack command. All in all, today’s project is an all-rounder for the Christmas tree.

Behind today’s door, there is another rather exciting sensor: an NTC (negative temperature coefficient). It changes its resistance depending on the temperature. It is a good idea to revisit some of the older experiments while using the temperature sensor. Today’s setup consists of quite a few elements. The potentiometer is also used again, to permit fine reconciliation of the NTC. Alternatively, you can also use the 10-kΩ-resistor, but will then be unable to perform fine tuning.

Der Aufbau des letzten Versuchs

The circuit of the last project

The program: Day24_Christmas

The final program must combine the many different elements. The ThingSpeak page is very important again. Among others, the threshold monitoring of the NTC is assumed by a ThingSpeak app. From there, the alarm action is performed, i.e. sending a Twitter message and inserting a TalkBack command that trips the alarm on the controller. The Time-Control app of the ThingSpeak page can also be used to specify a time at which the Jingle-Bells song will call the family to the tree, or at which the music is to wake you up the next morning.

In the first step, you need to set a new channel on the ThingSpeak page. You can name it FireAlarm, for example. Field1 is then given the name Temp. Under API keys, you will find the first key that you need to enter for the ThingSpeakKEY. This ensures transmission of the current temperature.

Der FireAlarm-Kanal

As a second step, you should generate a new TalkBack element. You can name it, e.g. Alarms. You can also have the commands logged in the channel FireAlarm. You need to enter the API key after TalkBackKEY and the ID after TalkBackID. Now you can also send commands to the board. You can also enter commands manually by clicking the Add a new Command in the TalkBack overview of the Alarm channel and then enter either Alarm or Jingle under Command String. You do not need to enter the position, since the command is automatically saved in the first location. You can now upload the program and test whether the transfer of the current temperature value works and whether the board executes the commands. In this place, it will also help to calibrate the NTC via the potentiometer with a room thermometer.

Generally, this would be a full project already. However, the bonus functions are still missing. They no longer need to be performed in the programme, however, but only on the ThingSpeak page. For this, go to Apps and then select React. React can be used to react to specific events. Click New React to create a new React function and enter the following values:

Name: FireDetect1

Condition Type: Numeric

Test Frequency: On Data Insertion

 Condition: If Channel

               FireAlarm

                field 1 (Temp)

               is great than

               40

Action: ThingTweet

               then tweet:

               Fire Alarm on the #NanoESP! Temp: %%trigger%%C #ThingSpeak #IoT

Using Twitter Account

               [Twitter Account]

Options: Run action only the first time the condition is met

ThingSpeak React mit Twitter-Anbindung

ThingSpeak React with Twitter integration

ThingSpeak React mit ThingHTTP-Anbindung

ThingSpeak React with ThingHTTP integration

Save React saves the settings. Thus, the first step of monitoring is already made. If the value is exceeded, ThingSpeak will send a Twitter message via your account. For the second step, insertion of the alarm command, you need to reach a bit more deeply into your sleeve. The function is not supported automatically. ThingHTTP is, however, supported. Therefore, click Apps and then ThingHTTP. Create a new element there and set the following:

Name:   Alarm

URL:      https://api.thingspeak.com/talkbacks/[YOUR TALKBACK ID]/commands

Method:              POST

HTTP Version:    1.1

Host:     api.thingspeak.com

Headers:

Body:    api_key=[YOUR TALKBACK ID]&command_string=Alarm&position=1

Die TalkBack-Einstellungen

The TalkBack settings

Ensure that you replace [YOUR TALKBACK ID] and [YOUR TALKBACK KEY] in the URL and the body part by your TalkBack-ID and your TalkBackKEY. Now you can create another React element which contains the same parameters as the first one, but with the change that you will now select ThingHTTP under Action and there the item Alarm. Thus, you have ensured that an alarm sounds when the critical value is exceeded.

As a last function, you can set up a time-controlled Jingle Bells. For this, click TimeControl under Apps and create a new element, e.g. with the name Bell. Make the following settings there:

Name:   Presents

Frequency:          One Time

Time Zone:         Berlin

Run At:                2015-24-12 7:00 pm

Fuzzy Time:         ± 0 minutes

TalkBack:            Alarms, add command: Jingle

Die TimeControll-Einstellungen

The TimeControll settings

For a first test, it is recommended to select a time in a few minutes. If this has worked, you can set the proper time.
You can also turn the project mobile with the 9-V battery clip or a rechargeable battery bank. When hiding the board in the tree, so that only the RGB-LED points out of the branches in a fitting location, the ambience is not unnecessarily impaired either. Right on time at 7 PM, all family members will be called to the tree by the sounds of Jingle Bells.

I wish you a Merry Christmas!

50 Comments

  1. Aulia

    Hey, can you share your code on arduino itself ? i dont know how to execute talkback and react on my arduino’s code..

    Reply
  2. Sascha

    Kann mir einer vllt erklären woran es liegen könnte, dass mein Lautsprecher nicht funktioniert? Ich bekomme nicht einen Ton heruas. Ich gebe “Alarm” oder “Jingle” ein und es tut sich nichts. Weiterhin habe ich im seriellen Monitor immer weider folgende Error:
    ESP SEND ERROR: AT+CIPSTART=”TCP”,”api.thingspeak.com”,80
    ESP SEND ERROR: AT+CIPSEND=102
    ESP SEND ERROR: AT+CIPCLOSE

    Kann mir einer weiterhelfen?

    Reply
  3. Rainer

    Auch wenn es etwas später ist, möchte ich mich auch recht herzlich für diesen tollen Adventskalender bedanken.

    Ich bin bei dem Abschlußprojekt aber leider an TalkBack gescheitert: Ich bekomme einfach keine Rückmeldung an den Controller hin. Bei ThingSpeak sehe ich zwar, dass die Kommandos abgearbeitet werden, aber im Seriellen Monitor kommt kein Kommando zurück, dort sehe ich nur eine Leerzeile. Egal, was ich mache. Trage ich die Kommandos “per Hand” ein, wie an Tag 8, funktioniert alles, also am Api-Key oder TalkBack Key kann es nicht liegen :-(

    Ich hoffe, dass es noch genug Leute (oder den Autor) gibt, die diesen Kommentar noch lesen, und eventuell Hilfestellung geben können.

    Cheerlights funktioniert (geniales Projekt!), und die Temperaturen vom NTC werden auch übermittelt.

    Gruß

    Rainer

    Reply
  4. Wolfgang

    Hallo,

    hat noch jemand Interesse an einem original erhaltenen Bausatz?
    Muß diesen leider aus Zeitgründen wieder verkaufen,

    mfg. Wolfgang

    Reply
    1. Dirk

      Wieviel soll er den Kosten?

      Reply
    2. Henning

      Hallo Wolfgang,

      willst Du den Kalender immer noch abgeben?
      Ich habe Interesse.

      Bitte antworte zunächst hier.

      Beste Grüße
      Henning

      Reply
  5. Alois

    Hi Folks,
    Zunaechst ein hezliches Dankeschoen an den Verfasser fuer die Muehe den Adventskalender zusammen zu stellen.

    Die Bilder zu jedem Versuchsaufbau sind (fast immer) selbsterklaerend.
    Mir fehlen jedoch die Schaltplaene, die den Schaltungen zu Grunde liegen.
    Man koennte dann auch sofort erkennen, dass, beispielsweise im Versuch 22 (Talk Back), die Taster nicht nur die Eingaenge D5 und D10, sondern gleichzeitig mit D5 auch D2 und mit D10 auch D7 auf Masse gezogen werden.

    Have a nice day

    Alois

    P.S. Ein gutes Neues Jahr

    Reply
  6. Christoph Sch

    kann mir jemand sagen, warum hier füttern die RGB-Led keine Vorwiderstände benötigt werden?

    Reply
  7. AndreasB

    Hallo,
    ich möchte mich noch einmal herzlich für den Kalender bedanken. Eine tolle Idee und hat mich auf neue tolle Ideen gebracht. Es hat auch alles bisher immer tadellos funktioniert.

    Heute Abend wollte ich aber wenigstens doch noch zusätzlich den Alarmton bei Feueralarm ausgelöst wissen. Das hatte bisher nicht geklappt. JingleBells sehr wohl. :-) Witzige Idee.

    Was mache ich denn beim Alarm falsch?
    Unter Url kommt die ID – also die numerische Nummer rein. und unter body kommt der pi_key rein. Aber welche alphanumerischeID ist das? Die ich zu allererst als write APi (talbackKey) erhalten habe oder der neu oben angegebene key unter thinkhttp?

    Bei mir ertönt auf diese Weise leider nie der Alarmton. Es wird zwar eine Twitternachricht geschickt, aber der Signalton löst einfach nicht aus.

    Wenn mir da noch einmal jemand helfen könnte? Würde mich sehr freuen.

    Ansonsten bleibt mir nur zu sagen: Guten rutsch ins neue sJahr 2016! Bleibt gesund.

    LG
    Andi

    Reply
  8. Nest

    Wer kann mir mit der Fehlermeldung helfen?
    Arduino: 1.6.6 (Windows 10), Board: “Arduino Nano, ATmega328”

    C:\Users\Kaltblut\Documents\Arduino\Day24_Christmas\Day24_Christmas.ino:26:20: fatal error: RGBLED.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Fehler beim Kompilieren.

    Reply
    1. Klaus

      Du hast die Bibliothek nicht in den libraries-Ordner kopiert. Beim Projekt gibt es einen Ordner libraries, wo ein Ordner RGBLED drin ist. Diesen musst Du in “Eigene Dateien\Arduino\libraries” kopieren (wenn Du den Standardordner für Deine Projekte gelassen hast)

      Reply
  9. HAWI

    https://www.instagram.com/p/_sWlJlpTp7/

    DANKE

    es hat Spaß gemacht

    Hans Wittek

    Reply
  10. jz

    Möge das Pretzelboard viele neue Anhänger bekommen, und damit preisgünstiger werden, oder Konkurrenten auf den Plan rufen!
    IoT hebt definitiv ab.

    Reply
  11. jz

    Danke für den tollen Kalender!
    (und Geduld für zusätzlichen Kommentar im Code des nächsten).

    Falls jemand das Beispiel Tag 24 erweitern möchte, empfehle ich, den Jingle im PROGMEM zu speichern, damit für Erweiterungen genügend dynamischer Speicher bleibt.

    Reply
  12. JOJU

    Ich bin sehr enttäuscht von den teilweise überhaupt nicht dokumentierten Code der hier im Kalender verwendet wird!

    Das ist sehr schade da bestimmt sehr viel mehr Leute viel hätten lernen können – Nun konnten sie lediglich durch Experimente den Code verändern um zu sehen welche Bedeutung die Zeilen haben.

    Sehr sehr schade .

    Reply
  13. Dubst3pg4m3r

    Hallo,
    bei mir hat alles Super funktioniert!
    Gibt es eine möglichkeit z.b. bei Tag 13 die LED von der Ferne aus zu Steuern?!
    sodass man nicht im selben Netzwerk sein muss?!
    Würde mich echt interessieren.
    LG

    Reply
  14. Schlork

    Sehr schöner Kalender, vielen Dank dafür!

    Reply
  15. Jonathan

    Ja, alle Experimente haben Spaß gemacht. Danke dem Autor. Bekommt es noch jemand hin, dass der Alarm nicht an Twitter sondern an whatsapp gesendet wird? Ähnlich
    http://www.embarcados.com.br/intel-edison-com-whatsapp/

    Reply
    1. Jonathan

      Wer kann das???

      Reply
    2. Jonathan

      Wer kann das?

      Reply
  16. Andreas

    Alle Türchen haben Spaß gemacht, vielen Dank, noch ein schönes Weihnachtsfest und einen guten Rutsch.

    Reply
  17. Andreas

    Alle Türchen haben Spasß gemacht, vielen Dank, noch ein schönes Weihnachtsfest und einen guten Rutsch.

    Reply
  18. Michael Schuck

    Hallole,
    mir hat der Kalender auch mächtig Spaß gemacht und ich habe in Sachen Programmierung wieder einen Schritt noch vorne gemacht. Einzig, dass in Day24 bei mir im Beispielsprogramm die LED falsch definiert waren, dacht ich schon, dass meine RGB-Led defekt ist. Nach erneutem überprüfen mit Day16 konnte ich die LED mir dem richtigen Ausgang definieren, seitdem werden alle Farben von der LED korrekt dargestellt.

    Reply
  19. Tobias

    Und was mache ich morgen?
    Danke für den Kalender, jedes Projekt hat bei mir funktioniert und hat Spass gemacht.

    Das Problem ist nur, morgen wird mir das experimentieren fehlen.

    Danke

    Reply
    1. generalovernight

      Tobias schrieb:

      “Und was mache ich morgen?”

      … ein Projekt für den Wettbewerb entwerfen?

      http://www.elektronik-labor.de/Lernpakete/Kalender15/Contest15.html

      Reply
  20. Peter

    Thank you very much for the 24 projects. I can only imagine the effort it has cost to make this work. I had a lot of fun, and used each daily project to show to my kids and educate them a little as well. Can’t wait to hear their response tomorrow on the Jingle Bells melody :).

    Also thanks for providing every project in English as well! Frohe Weihnachten!

    Reply
  21. Martin

    Vielen Dank für den tollen Adventskalender. Nach meinen anfänglichen Schwierigkeiten mit Linux und nach dem Umstieg auf Windows haben bei mir fast alle Projekte sehr schnell funktioniert. Einzig das Projekt mit der Infrarot-Fernbedienung hat nicht geklappt. Wäre aber sicher auch irgednwie gegengen wenn ich noch etwas mehr Geduld gehabt hätte.

    Der Umfang der einzelnen Projekte war für mich genau richtig. Es hat mich jeden Tag so ca. 30 bis 60 Minuten beschäftigt. Mehr Zeit, um mich in den Programmcode einzuarbeiten, hätte ich gar nicht gehabt. Dennoch wäre eine ausführliche Kommentierung im Code hilfreich für die, die jetzt weitermachen wollen. Vlt kann jemand für das letzte Projekt, dass am umfangreichsten ist, einen kommentierten Code zur Verfügung stellen?

    Die Verarbeitung des Kalenders finde ich allerdings sehr billig. Die Pappkarton ist nicht genau passend auf die Kunststoffschale aufgeklebt. Zudem ist die Perforation nicht gut, sodass es jeden Tag aufs neue eine Herausforderung war das Türchen aufzubekommen ohne den ganzen Kalender zu zerreißen. An Tag 21 hat sich dann zudem der Karton komplett gelöst und ich hatten plötzlich den NTC von Tag 24 in der Hand ohne dass das Türchen offen war. Schnell war mir klar, dass es nicht am Tunneleffekt sondern an der schlechten Verklebung lag. Hier könnte Conrad nochmal nachlegen.

    Alles in allem war ich aber sehr zufrieden und ich hab mich jeden Tag aufs neue auf das Projekt gefreut. Ich würde mich freuen wenn es nächstes Jahr einen ähnlichen Kalender geben würde.

    Ich wünsch allen Frohe Weihnachten!

    Viele Grüße

    Martin

    Reply
    1. generalovernight

      Da das nicht mein erster Adventskalender war, habe ich den Bogen inzwischen raus. Die Türchen gehen sauberer auf, wenn man sie am Rand entlang nach innen drückt. Wenn man sie komplett reindrückt bekommt man sie aber ohne Werkzeug schwer wieder heraus. Also entweder erst die obere oder untere Hälfte eindrücken, dann heruasziehen und anschließend die zweite Hälfte eindrücken oder einen Schraubenzieher o.ä. zu Hilfe nehmen.

      HTH für’s nächste Jahr

      Reply
    2. generalovernight

      … und was das Windows, betrifft: mag sein, wenn man hauptsächlich Windows kennt, aber mir hat Linux die Installation zusätzlicher Software mit weiteren möglichen Fehlerquellen erspart, weil ich wusste, wie ich die Aufgaben mit den Standardmitteln des Betriebssystems schnell und einfach löse.

      Reply
    3. Frank

      Bei mir tat ein Cutter gute Dienste, so dass mein Kalender vom ersten bis zum letzten Tag wie ausdem Ei gepellt aussah.

      Reply
  22. RainerK

    Danke für den schönen Kalender, ich hab’ alles mit Pretzelboard und Teilen aus der Bastelkiste nachgebaut. Es hat wunderbar geklappt. Nun bin ich auf den Wettbewerb gespannt.

    Reply
  23. Joerg

    Nochmal vielen Dank für den 1A Kalender und die spannenden und lehrreichen Tage. Bin gespannt auf nächstes Jahr. Frohe Weihnachten an alle!

    Reply
  24. Leuchten

    Hallo!
    Bei mir spinnt der NTC herum. Alles andere geht, aber er zeigt die ganze Zeit nur 327.83 an. Egal was ich am Poti herumdrehe, er zeigt nur dasselbe an. Meine Vermutung: Kaputt????? Wisst ihr da was?

    Reply
    1. Franz

      Nochmal die Verkabelung überprüfen.
      war bei mir auch am Anfang, bis ich herausfand, dass das Poti gar nicht angeschlossen war (hatte mich um eine reihe vertan)

      Reply
  25. bernd

    der kalender hat sehr viel spaß gemacht! Ich hoffe nächstes Jahr gibt es wieder einen. mal sehen was das nächste jahr an neuen themen bringt.
    ich könnte mir gut vorstellen, dass aus diesem kalender ein Conrad-experimentierkasten werden könnte.
    zum abschluss: thingspeak ist opensource und kann auf einem eigenen server installiert werden. dann kann man zwar cheerlights nicht verwenden, aber man hat alles in den eigenen händen. ich würde es gut finden, wenn der weg mit dem eigenen server aufgezeigt würde.

    Reply
  26. Christoph

    Was mache ich denn mit den pitches aus
    Das Programm: Day24_Christmas ?
    Beim Kompilieren werden sie nicht gefunden und bewirken einen fatal error.

    Reply
    1. nerd

      Sofern pitches.h und Day24_Christmas.ino sich im gleichen Ordner befinden, und #include “pitches.h” nicht verändert wurde (nicht in Pfeilklammern) sollte dies funktionieren.

      Reply
    2. Niklas

      Gleiches problem…

      Reply
      1. Niklas

        Habe es hinbekommen:
        Ich musste im Programm auf Sketch -> Bibliothek einbinden -> .ZIP Bibliothek hinzufügen -> dann den RGBLED Ordner (!) auswählen und hinzufügen. Der Ordner befindet sich im libraries-Ordner des heutigen Downloads.

        Reply
        1. nerd

          Geht auch einfacher wenn man sich an die Anleitung zu Tag 23 hält: Kopie der Library RGBLED.

          Reply
    3. Klaus

      Hast Du vielleicht nicht alles entpackt? Im gleichen Verzeichnis wie die .ino muss sich auch die pitches.h befinden.

      Reply
  27. hugoboss

    Frohe Weihnachten allen zusammen,
    es hat mega viel Spaß bereitet und war ein tolles interessantes Projekt.
    Dankeschön….
    Und jetzt muss ich Geschenke einpacken :-)

    Reply
  28. hugoboss

    Hinweis:
    Body:
    api_key=[YOUR TALKBACK ID]&command_string=Alarm&position=1

    Korrekt ist:
    Body:
    api_key=[YOUR TALKBACK KEY]&command_string=Alarm&position=1

    Reply
    1. Marco

      Danke

      Reply
    2. Dirk

      Kannst du bitte die Zeile mit angeben.

      Vielen Dank.

      Reply
      1. Schlork

        Das findest die in der obigen Beschreibung zur Konfiguration bei ThingSpeak (“Achten Sie darauf…”).

        Reply
  29. MC

    Hallo,
    ich wollte mich auf diesem Wege für die tollen und interessanten Projekte in dem Kalender bedanken. Es hat viel Spaß gemacht, und ich habe auch einiges lernen können.
    Obwohl es sicher auch so schon viel Arbeit war, die Projekte zu erstellen, wäre es noch schön gewesen, wenn der Code der Sketches sauber kommentiert gewesen wäre, so dass man schneller verstehen könnte, was genau hinter den einzelnen Zeilen steckt.
    Da große Teile der Sketches eh oft identisch waren, wäre der Aufwand hierfür sicher nicht zu groß gewesen.
    Und noch ein Wort an CONRAD:
    Die Qualität des Kalenders hätte für den Preis sicher besser sein können. Aufgrund der schlechten Perforation ließen sich manche Türchen recht schlecht öffnen, was dann dazu führte, dass sich die gesamte Pappe von Plastik löste, weil die Verklebung auch nichts gehalten hat. Also in Sachen Qualität hätte ich von CONRAD etwas mehr erwartet.
    Frohe Weihnachten an alle, MC.

    Reply
  30. hugoboss

    ACHTUNG in Zeile:
    if (configStation(SSID, PASSWORT)) {

    muss das ‘T’ in ‘D’ geändert werden:
    if (configStation(SSID, PASSWORD)) {

    Reply
  31. generalovernight

    Herzlichen Dank! Ab dem 19. haben mich die Experimente zwar nicht mehr interessiert – wenn ich eine Lampe in meiner Wohnung schalten oder eine Temperatur ablesen will, dann brauche ich dazu kein Internet und keinen fremden Server – aber nachdem ich Tag 18 zum Laufen gebracht und etwas modifiziert habe, kann ich endlich meinen Beamer vom Rechner ausschalten und brauche die blöde Fernbedienung nicht mehr :-)

    Natürlich ist dabei auch das WLAN überflüssig, wie man einen Taster an den nano klemmt habe ich hier ja auch gelernt und das ganze sollte wohl ohne Probleme auf einen normalen Arduino nano übertragbar sein. Alles in allem hat sich der Kalender für mich voll gelohnt.

    Was noch zu wünschen bleibt ist, dass beim Fabian ein englisches Wörterbuch unterm Weihnachtsbaum liegt ;-)

    Für alle, die auch weiterhin Webseiten basteln wollen, möchte ich noch die Seite https://selfhtml.org/ empfehlen. Dieses Standardwerk zu HTML existiert bereits seit dem letzten Jahrtausend ;-) und enthält neben einer detailierten Dokumentation aller Elemente und Konzepte, die irgendwie mit Webseiten zu tun haben, auch Einführungen für Anfänger – und das ganze steht jedem kostenlos und ohne Anmeldung zur Verfügung.

    Die Webseiten der IoT-Adventskalenders-Programme mögen zwar den Eindruck erweckt haben, es sei nicht so wichtig, Webseiten korrekt zu programmieren. Das liegt daran, dass die fetten Desktop-Browser fast jeden HTML-Code irgendwie darstellen können, egal wie viele Fehler er enthält. Die Betonung liegt hier auf “irgendwie”, man sollte sich dann nicht wundern, wenn die Seite nicht so aussieht, wie man sich das vorgestellt hat. Eine Überraschung erlebt man auch dann, wenn man einmal versucht die Seite zum Beispiel auf einem Raspi zu lesen, wo man eben keinen fetten Desktop-Browser zur Verfügung hat.

    Die meisten Fehler in den HTML-Seiten des Adventskalender sind aber sehr leicht zu entdecken, wenn man sich einmal die grundlegenden Eigenschaften eines HTML-Dokuments anschaut: Es ist heirarchisch aufgebaut und die meisten HTML-Elemente bestehen aus einem öffnenden und einem schließenden Tag sowie einem Inhalt dazwischen. Abgesehen vom äußersten ist daher jedes HTML-Element in einem anderen enthalten und es muss auch geschlossen werden, bevor das äußere Element geschlossen wird.

    Ein HTML-Code wie

    ≤head≥
    ≤center≥
    ≤title≥...≤/title≥
    ≤/head≥
    ≤body≥
    ...
    ≤/center≥
    ...

    kann daher grundsätzlich nicht richtig sein (abgesehen davon, dass ein Center-Tag im HTML-Head ohnehin sinnlos ist und die Formatierung mit Mitteln wie Center, Font, etc. sowas von 90er-Jahre ;-). Bestenfalls wird das ganze als zwei unvollständige HTML-Elemente interpretiert, eins das nicht geschlossen ist und eins, dem das öffnende Tag fehlt. Wie das ganze dann dargestellt (oder komplett ignoriert) wird liegt dann im Ermessen des Browsers bzw. denjenigen, der ihn programmiert haben.

    Damit wünsche ich allen hier ein frohes Weihnachtsfest und immer eine handbreit freie Bytes auf dem nanoESP-Heap.

    PS: Dieses kleine Perl-Skript rechnet den HTML-Quelltext nicht nur in die Byte-Darstellung um, sondern entfernt auch noch führende Leerzeichen und Zeilenendekennzeichnungen. Damit lassen sich bei den HTML-Seiten hier leicht 200 Bytes im Sketch einsparen (die Spitzen Klammern habe ich wieder durch “≤” und “≥” ersetzt.

    my ($i,$len)=0,0;
    while(≤≥) {
    my @chars = split //;
    my ($sol,$cr) = 1,0;

    $len += scalar @chars;
    CHAR:
    for my $char (@chars)
    {
    # skip over leading white space
    unless ($sol and $char =~ /\s/)
    {
    $cr = 1, next CHAR if $char eq "\r";
    $cr = 0, $sol = 1, next CHAR if $cr and $char eq "\n";
    $sol = 0;
    print "," if $i++;
    print ord($char);
    }
    }
    }
    printf STDERR "read %d, wrote %d chars\n", $len, $i;

    Reply
  32. Bitbeißer

    Ich hatte mit den Keys und ID´s so meine Probleme. Hier meine Zuordnung.
    #define SSID “[Your SSID]” //* Name des Heimnetzes / Router
    #define PASSWORT “[Your Password]” //* Passwort des Heimnetzes / Router
    #define ThingSpeakKEY “[Your Key]” //* Write API Key FireAlarm
    #define TalkBackKEY “[Your Key]” //* API Key TalkBack Alarms
    #define TalkBackID “[Your ID]” //* ID des TalkBack Alarm

    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.