Benutzer-Werkzeuge

Webseiten-Werkzeuge


projekte:homecomfort

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
projekte:homecomfort [2021/01/22 16:44] mancasprojekte:homecomfort [2021/01/22 17:02] (aktuell) mancas
Zeile 8: Zeile 8:
 # Bilddateiname relativ zum Ordner projekte: # Bilddateiname relativ zum Ordner projekte:
 # Wenn (noch) kein Bild vorhanden, bitte none.png lassen # Wenn (noch) kein Bild vorhanden, bitte none.png lassen
-imgname_img90   : none.png+imgname_img90   : led-uhr-zeit.jpg 
  
 # Links zu Seiten der Mitglieder, die am Projekt beteiligt sind, also intern:mitglieder:hubert (mehrere mit Komma getrennt) # Links zu Seiten der Mitglieder, die am Projekt beteiligt sind, also intern:mitglieder:hubert (mehrere mit Komma getrennt)
Zeile 15: Zeile 16:
 # Start- und Enddatum im Format JJJJ-MM-TT # Start- und Enddatum im Format JJJJ-MM-TT
 start_dt        : 29.04.2020 start_dt        : 29.04.2020
-end_dt          : +end_dt          : 16.05.2020 
 + 
 +# Kurzbeschreibung 
 +shortdesc       : LED Wanduhr mit dem Arduino ESP32
  
 # Aktueller Status des Projekts, z.B. fertig, in Arbeit, eingestellt, Idee, ... # Aktueller Status des Projekts, z.B. fertig, in Arbeit, eingestellt, Idee, ...
-status_         : in Arbeit+status_         : fertig
 ---- ----
  
-Marco hatte diese Uhr nach einer Idee von bastelgarage.ch Donnerstags zu unserem Linux Vereinstreffen mitgebracht. https://www.youtube.com/watch?v=BMY3TZdeMGw +https://22x22.de/posts/led-wanduhr/
- +
-Das machte Lust dieses Projekt nachzubauen, da es ein schönes Beispiel ist für: +
- +
-Code schreiben für den ESP8266 +
-Ansteuerung einer 8x8-LED Anzeige +
-Text rollt über die Anzeige +
-Einwählen ins WLAN +
-Uhrzeit wird vom Zeitserver abgeholt +
-Wetter kommt von openweathermap.org +
-Variablen für den Programmcode werden aus einem Json-File aufbereitet +
-Gut zum Lernen und ausbaufähig zum kreativen Umsetzen mit eigenen Ergänzungen im Code. +
- +
-LED-Uhr-Orig +
- +
-Macht sich gut in einem schönen Gehäuse! +
-LED-Uhr-Zeit +
- +
-LED-Uhr-Innen +
- +
-So wird angepasst +
-Die Wetteranzeige hatte bei mir leider nicht funktionniert. Daher wurde das Script auf die Library ESP8266HTTP umgestellt. +
- +
-// Modifiziertes Script von https://techtutorialsx.com/2016/07/17/esp8266-http-get-requests/ +
-// replaces getWeatherData() +
- +
-// added by mancas +
-// #include <ESP8266WiFi.h> +
-// #include <ESP8266HTTPClient.h> +
-  +
- +
-void getMetarData ()  { +
-String line; +
-  +
-if (WiFi.status() == WL_CONNECTED) { //Check WiFi connection status +
-  +
-HTTPClient http;  //Declare an object of class HTTPClient +
-  +
-http.begin("http://api.openweathermap.org/data/2.5/weather?id=xxxx&units=metric&appid=xxxxxx&lang=de");  //Specify request destination +
- +
-int httpCode = http.GET();                                                                  //Send the request +
-Serial.print(" httpCode is "); +
-Serial.println(httpCode); +
-  +
-if (httpCode > 0) { //Check the returning code +
-  +
-String payload = http.getString();   //Get the request response payload +
- +
-Serial.print(" - Response from Server "); +
-Serial.println(payload);                     //Print the response payload +
- +
- +
-line += payload; // to let the rest of the script untouched +
-Serial.println(line); +
-  +
- +
-http.end();   //Close connection +
-+
- +
-// Allocate JsonBuffer  // Leh +
-  // Use arduinojson.org/assistant to compute the capacity. +
-  const size_t capacity = JSON_ARRAY_SIZE(2) + JSON_OBJECT_SIZE(1) + 2*JSON_OBJECT_SIZE(2) + 2*JSON_OBJECT_SIZE(4) + JSON_OBJECT_SIZE(5) + JSON_OBJECT_SIZE(6) + JSON_OBJECT_SIZE(12) + 420; +
-  DynamicJsonBuffer jsonBuf(capacity); +
-   +
-//  DynamicJsonBuffer jsonBuf; +
-  JsonObject &root = jsonBuf.parseObject(line); +
-  if (!root.success()) +
-  { +
-    Serial.println("parseObject() failed"); +
-    return; +
-  } +
-  //weatherMain = root["weather"]["main"].as<String>(); +
-  weatherDescription = root["weather"]["description"].as<String>(); +
-  weatherDescription.toLowerCase(); +
-  //  weatherLocation = root["name"].as<String>(); +
-  //  country = root["sys"]["country"].as<String>(); +
-  temp = root["main"]["temp"]; +
-  humidity = root["main"]["humidity"]; +
-  pressure = root["main"]["pressure"]; +
-  tempMin = root["main"]["temp_min"]; +
-  tempMax = root["main"]["temp_max"]; +
-  windSpeed = root["wind"]["speed"]; +
-  windDeg = root["wind"]["deg"]; +
-  clouds = root["clouds"]["all"]; +
-   +
- getTimeLocal(); +
- +
-  String windDirection = "N NOO SOS SWW NW";  // Windrichtungen N NO O SO S SW W NW immer 2 char lang +
-  int wr = (windDeg+22)%360/45; +
-//  Serial.println(wr); +
- +
-  String dayName[] = {"Err", "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"}; +
- +
-// For test purposes +
-// String(d) = "25"; +
-// String(m) = "5"; +
-// w = 2; // was monday in year 2020 +
-   +
-  String deg = String(char('~' + 25)); +
-  String arrowUp = String(char('~' + 23)); +
-   +
-  if (String(d) == "25" and String(mo) == "5") { +
-    weatherString = "       " + dayName[w]  + "  " + String(d) + "." + String(mo) + " Towel Day!      "; +
-  } else { +
-    weatherString = "       " + dayName[w]  + "  " + String(d) + "." + String(mo) + "." + String(ye) + "     "; +
-  } +
-  weatherString +=   String(temp, 1) + deg + "C "; +
-  weatherString += "  Luftf.: " + String(humidity) + " ";  // Luftfeuchtigkeit +
-  weatherString += "  Luftd: " + String(pressure) + "hPa  "; // Luftdruck +
-  weatherString += "  Regenrisiko: " + String(clouds) + " "; // Regenrisiko +
-//  weatherString += "  Wind: " + String(windSpeed, 1) + "m/               "; // Windgeschwindigkeit +
-  weatherString += "  Wind: " + String(windSpeed, 1) + "m/ "; // Windgeschwindigkeit +
-  weatherString += String(windDeg) + deg + "  "; +
-  weatherString +=  arrowUp + "  " + windDirection.substring(2*wr,2*wr+2) + "    "; // Windgeschwindigkeit und Richtung +
-  Serial.println(weatherString);  //Leh +
-+
- +
-}  +
-LED-Uhr-Wetter-mp4 +
- +
-Towel Day +
-Die Uhr kann natürlich auch an Geburtstage und andere wichtige Termine erinnern. Eine einfache Abfrage im Script machts möglich. Das Beispiel für den Nerd: Towel Day am 25.05. ist in obigem Script eingebaut. +
- +
-Live Anzeige vom Textserver +
-Andere Variante für Live-Anzeige: In meinem Laptop habe ich einen Webserver aufgesetzt. Dieser wird abgefragt und der dort gepostete Satz angezeigt. +
- +
-void getLocalWebData ()  { +
- +
-String Line; +
- +
-if (WiFi.status() == WL_CONNECTED) { //Check WiFi connection status +
-  +
-HTTPClient http;  //Declare an object of class HTTPClient +
-  +
-http.begin("http://192.168.63.6");  //Specify request destination +
- +
-int httpCode = http.GET();                                                                  //Send the request +
-Serial.print(" - httpCode is "); +
-Serial.println(httpCode); +
-  +
-if (httpCode > 0) { //Check the returning code +
-  +
-Line = http.getString();   //Get the request response payload +
- +
-Serial.print(" - Response from localWebServer "); +
-Serial.println(Line);                     //Print the response payload +
- +
-WebLine = "  " + Line + "   "; +
- +
-http.end();   //Close connection +
- +
-+
-+
-    +
-getTimeLocal(); +
-   +
-Serial.println(WebLine);  //Leh +
-+
- +
-Zum Abschluß eine Wortuhr +
-Schließlich wurde die Uhr auf reine Textanzeige umgestellt. Die Anzeige ist für Slowdown-Nerds: “Es ist so viertel nach Zehn” ist ein Beispiel dazu. +
- +
-//Sprachausgabe der Uhrzeit +
- +
-int Stunde; +
-String MinutenText; +
-String StundenText; +
- +
-void WordClock () { +
- +
-  getTimeLocal(); +
-  Serial.println("Wordclock "); +
- if (h > 12) {Stunde = h-12;} else {Stunde = h;}  +
-   +
-//  Serial.print(Stunde); Serial.print(" : "); Serial.println(m); +
- +
- if (m == 0) {MinutenText = "genau ";} +
- if (m > 0)  {MinutenText = "kurz nach ";} +
- if (m > 2)  {MinutenText = "funf nach ";} +
- if (m > 7)  {MinutenText = "zehn nach ";} +
- if (m > 12) {MinutenText = "viertel nach  ";} +
- if (m > 17) {MinutenText = "zwanzig nach ";} +
- if (m > 22) {MinutenText = "funf vor halb "; Stunde = Stunde + 1;} +
- if (m > 27) {MinutenText = "halb ";} +
- if (m > 32) {MinutenText = "funf nach halb ";} +
- if (m > 37) {MinutenText = "zwanzig vor ";} +
- if (m > 42) {MinutenText = "viertel vor ";} +
- if (m > 47) {MinutenText = "zehn vor ";} +
- if (m > 52) {MinutenText = "funf vor ";} +
- if (m > 57) {MinutenText = "gleich ";} +
- +
- if (Stunde == 1) {StundenText = "eins";+
- if (Stunde == 2) {StundenText = "zwei";+
- if (Stunde == 3) {StundenText = "drei";+
- if (Stunde == 4) {StundenText = "vier";+
- if (Stunde == 5) {StundenText = "funf";+
- if (Stunde == 6) {StundenText = "sechs";+
- if (Stunde == 7) {StundenText = "sieben";+
- if (Stunde == 8) {StundenText = "acht";+
- if (Stunde == 9) {StundenText = "neun";+
- if (Stunde == 10) {StundenText = "zehn";+
- if (Stunde == 11) {StundenText = "elf";+
- if (Stunde == 12) {StundenText = "zwolf";+
- +
-  +
-// Serial.print(MinutenText); +
-// Serial.println(StundenText); +
- +
-TimeString = "                    Es ist so " + MinutenText + StundenText + "                                      "; +
-Serial.println(TimeString);  +
- +
-+
-Viel Spaß beim Mitmachen wünscht mancas! +
projekte/homecomfort.1611333873.txt.gz · Zuletzt geändert: 2021/01/22 16:44 von mancas

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki