Day 18: Weather monitoring
Behind today’s door is a very special component, namely a humidity sensor. Together with the phototransistor and the NTC, it creates a weather station for at-home use. The following layout is necessary for this purpose:
Today’s layout is a bit fiddly. Especially at the point where the potentiometer on the right of the image sits, it touches the NanoESP. But that’s not really a problem as long as the contact on the left of the image is plugged firmly into the board.
After you upload the programme, you can now open the website. You see three values that are represented as text and as bars. You can now calibrate the values somewhat with the potentiometers. The temperature value, especially, should be compared to a thermometer and adjusted. That’s the only way to ensure that the information on the website is more or less accurate.
Ich finde das Projekt ebenfalls hochinteressant, jedoch ist das ganze alles andere als funktionsfähig aktuell… Ich habe folgende Probleme (verwende den Sketch von Gerald!):
1. Internet Explorer sowie Safari funktionieren garnicht, auf dem iphone funktioniert nichtmal Chrome.
2. Erst nach einigen Minuten Wartezeit werden Daten angezeigt.
3. (das schlimmste!): Wenn ich das Browserfenster schließe, ist die Seite danach garnicht mehr erreichbar. Erst ein Neustart des Arduino bringt abhilfe…
Da ich das ganze gerne praktisch einsetzen würde, mir aber jegliche Erfahrung im Bereich Arduino-Programmierung fehlt, wäre ich über Hilfe sehr dankbar ;-)
Hallo,
bei mir lief das Ganze erst nach einigen Änderungen.
1. Im Original-Code fehlt in Zeile 69 ein Ausrufezeichen vor “http….”
falsch: “if (http.sendStreamHeader(id)) {”
richtig: “if (!http.sendStreamHeader(id)) {”
2. Die Browserseite muss man nach dem abgeschlossenen Arduino-Start nochmal aktualisieren, wenn man nicht lange warten will.
3. Zur Kalibrierung der Temperatur musste ich noch zwei 1 kOhm Widerstände in Reihe zum Poti schalten.
4. Für die Lichtmessung habe ich zur Optimierung der Empfindlichkeit analog zum Tag 12 einen 10 kOhm Widerstand in Reihe zum Poti geschaltet. Außerdem darf das zweit Bein des Fototransistors natürlich nicht ins Leere zeigen, sondern muss einen Kontakt weiter rechts zu den Drahtbrücken gesteckt werden.
Hallo Hermann,
vielen Dank für den Tip! Genau jetzt funktioniert auch bei mir!
Das Projet ist leider gar nicht getestet.
Hallo,
habe das Projekt total vergewaltigt.
An A0 bis A5 habe ich zum Test Potis und möchte Smartphone bzw. Tablet als seriellen Monitor via Internet nutzen.
Bis 5 Analogeingänge kriege ich problemlos übertragen, beim 6. geht nichts mehr, obwohl bis auf die letzte Erweiterung alles identisch ist.
Hat jemand Lust und Zeit mir zu helfen ???
Upps!
In der Vorschau stand das Bild senkrecht.
Der Arduino-Sketch isses nicht, da laufen alle 6 abgefragten Analogeingänge.
Sobald ich auf der vom NanoESP generierten Webseite den 6. Analogeingang “scharf” mache, ist Feierabend.
Kann ja nur noch mit diesen beiden Zeilen in website.h zusammenhängen:
var source = new EventSource(“/eventclimate”);
Da sind garantiert die Balken und sowas hinterlegt…
Muss ich kapitulieren, soweit reicht mein Gehirnschmalz nicht
:-(
ich habe dieses Türchen mal etwas “aufgebohrt”. Mit einem externen Client-Rechner (VB.net 2015) habe ich eine Streamverbindung aufgebaut. Geht prinzipiell ganz gut!
Daten von dem Server (WiFi-Board) werden klaglos übertragen. Nur vom Client auf das WiFi-Board sehe ich höchstens die Anzahl der empfangenen Daten. Die Anzahl ist korrekt. Aber wie komme ich an die Daten ran?
Ganz, ganz vielen Dank, wenn jemand helfen kann!!!
Hier der Code:
if (streamId > -1) { //there is a stream client
if (Serial.available() > 0) { //Bytes da?
text= Serial.readString(); //hol sie ab
if (text != “”) nanoesp.sendData(streamId, text); //und raus
text=””; //buffer löschen
} //if (s
}//if streamId
nanoesp.recvData(streamId,len); //wieviele Daten sind da?
if (lenalt != len) { //Änderung anzeigen!
Serial.println(“len = ” + String(len) + “lenalt= ” + String(lenalt));
lenalt = len;
//!!!!!Daten holen!!!!!!! ???????
// ????
// Aber wie”
Serial.println(“intext = ” + intext);
}
}//loop
Falls hier noch jemand liest…
Diese Frage wurde leider noch nicht beantwortet…
Wie kommt man (über TCP/UDP) an empfangene Daten ran?
nanoesp.recvData(streamId,len) schön…
Wo ist die Lesefunktion, mit der man die Daten in einen Buffer schreiben kann?
Bitte um Hilfe, falls das jemand schon mal gemacht hat – ist ja eigentlich logisch, dass man nicht nur Daten senden will.
Das ist doch die Lesefunktion. Danach hast Du die Daten in streamId
Habe es leider noch immer nicht verstanden.
streamID enthält nur eine “ID”-0,1,2,3 usw. und keine Daten.
Habe inzwischen herausgefunden, dass z.B. “nanoesp.readStringUntil(13)”
mir die empfangenen Zeichen liefert, das ist aber eine andere Funktion, evtl. geht es noch besser.
Ein kleines Beispiel, wie das richtig geht wäre nett.
Jetzt geht es. Danke Bernd…
Das Bild enthält die Lösung!
Heute geht das Programmchen bei mir nicht zu kompilieren, wie bei einem anderen Kommentar…
Die Fehlermeldung endet:
C:\ed\Arduino\libraries\NanoESP-1.1\NanoESP_MQTT.cpp:429:37: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
collect2.exe: error: ld returned 5 exit status
exit status 1
Fehler beim Kompilieren für das Board Arduino Nano.
Dieser Bericht wäre detaillierter, wenn die Option
“Ausführliche Ausgabe während der Kompilierung”
in Datei -> Voreinstellungen aktiviert wäre.
ich habe das leider auch so
Der Fehler beim Kompilieren trat unter XP auf, jetzt unter Windows 10 funktioniert es.
Ich fand es schöner das ganze als Langzeitdiagramm wie an Tag 14 zu haben. Ich habe das Sketch nach einigen Probieren angepasst, geht bestimmt auch einfacher, aber da ich keine Ahnung von der Programmierung in C++ und Adruino habe :-) musste ich ein bisschen rumprobieren bis es klappte, aber jetzt läuft es :-) Dafür musste ich aber ein bisschen Energie bei Blynk kaufen.
kannste ja mal teilen dein sketch :)
Bei mir funktioniert schon das Kompilieren nicht. Ich erhalte die Fehlermeldung
collect2.exe: error: ld returned 5 exit status
und kann leider gar nichts damit anfangen.
Gibt es jemand, der mir helfen kann?
Ich habe auch diese Fehlermeldung (und bin spät dran…) Gibt es eine Lösung für diese Aufgabe?
Der Fehler beim Kompilieren trat unter XP auf, jetzt unter Windows 10 funktioniert es.
bleibt beim TCP Server Error. So schade, dass mir keiner hilft.
Ich habe die Berechnung der Luftfeuchte gegen die angegebene Quelle geprüft, da ich zu hohe Werte bekomme.
Der Widerstand wird falsch berechnet.
Quelle: R = 35000 * U;
hier: R = 3500 * U;
Nach der Korrektur auf 35000 werden die korrekten 33% Luftfeuchte ausgegeben, anstatt 50%.
Danke!
Kein Hinweis in der PDF und im Begleitheft, schade.
Was wohl richtig ist? (Quelle)
Quelle Kommentar im Skript
//R=35k*(U/1023-U)
ist nicht 3500 sondern 35000
Hallo zusammen
mit den 3-Zusatzzeilen von Basti hat es bei mir dann endlich mit Chrome geklappt, musste aber bisschen warten…
Hoffe bei euch funktioniert es auch mit den 3-Zeilen, vielen dank an Basti!!!
Schade, das ganze lässt sich nicht wiederholen… )-:
wenn man in Zeile 38-40 noch folgende Änderungen vornimmt scheint es immer zu funktionieren… auch nach einem Reboot.
(WifiMode von DUAL auf STATION)
//Dual Mode
nanoesp.configWifiMode(STATION);
delay(1000);
Wow,danke!!!
Hallo,
seit dem diese Website.h datei eingebunden wird erscheint bei mir immer folgender Fehler Text:
Arduino: 1.6.13 (Windows 10), Board: “Arduino Nano, ATmega328”
C:\Users\Philipp\AppData\Local\Temp\Temp1_A16_P18_Climate.zip\A16_P18_Climate\A16_P18_Climate.ino:9:22: fatal error: Websites.h: No such file or directory
#include “Websites.h”
^
compilation terminated.
exit status 1
Fehler beim Kompilieren für das Board Arduino Nano.
Und wie schon glaube ich angemerkt sind die Aufbauten im Heft und der Website unterschiedlich.
Ich hoffe mir kann jemand helfen.
Würde den Zip-Ordner extrahieren…
Bei Mir funktionierte es so.
Hallo,
bis jetzt habe ich alles hinbekommen. Aber heute geht gar nichts.
Auch ich habe nur einen halben Balken bei der Temperatur, keinerlei Werte. Wenn ich Änderungen des Skripts vornehme, wie oben vorgeschlagen, bekomme ich stets die Fehlermeldung
“exit status 1
stray ‚\342‘ in program”
und es wird nicht weiter hochgeladen.
Wäre es möglich, den korrigierten Sketch hier als Download zu veröffentlichen?
Und ich verstehe schon mal gar nicht, wie der Aufbau heute ist: von H2 nach H11: da steckt bei mir der Nano-ESP.
Schade, bis heute konnte ich gut mithalten.
Ja ich würde mir auch wünschen der Autor (Verursacher) macht mal ein Update (Fritzing + Sketch).
Aber es ist Advent und sicher hat jeder Familie etc..
hier mal zum Kalender ein pdf.
In diesem sind die richtigen Fritzing Bilder drin.
https://www.conrad.de/de/adventskalender-conrad-components-adventskalender-internet-of-things-ab-14-jahre-1435475.html
im Begleitheft aber auch.
nach einfügen der 3 Zeilen, danke Ralf, basti sehe ich ‘Werte’ im Monitor nach einer Aktualierung der Browser.
von links nach rechts.
Chrome, Firefox, IE 11
Foto
weitere 5 Minuten gewartet und er zeigte ‘Chrome’ etwas an.
noch ein Foto: Chrome
Light -> denke mal die Photodiode ist defekt
ich denke bei mir ist diese Diode auch defekt. Sie zeigt bei mir gar nichts an.
Diode mal gesteckt. Anode, Kathode getauscht.
Dann mit dem Trimmer jeder Wert einstellbar.
Ich denke aber der ESP8266 ist nicht zuverlässig um eine unterbrechungsfreie Verbindung zu gewährleisten.
Diode mal so und mal so gesteckt (aber immer Y5-J6). Aber auch beim ersten Einsatz der Diode mit der Blynk App hat das schon nicht funktioniert…
Ach so: Was hast du gemacht, dass die “richtige” Temperatur angezeigt wird. Bei mir wird immernoch -273 Grad angezeigt…
es richtig verdrahtet.
NTC gegen Plus und nicht GND.
Ich benutze ein größeres Steckboard mit Plus, GND oben wie unten, da kam es zur Verwechslung, ohne Schaden.
Danke für die Antwort. Könntest du mir das bitte verständlicher (für mich) erklären? Mein Board ist so aufgebaut wie im beiligenden Heft…
Danke
Schema ist falsch. Phototransistor an 6. Spalte einstecken anstelle von 5!
Bei mir gehts nicht, alles probiert.
Vieleicht kann ein neues sketch helfen,….
oh jetzt, über Handybrowser.
aber 327C kann nicht stimmen.
lag am poti, wackeln hat geholfen
mit dem Skript von Gerald funktionierts. Allerdings sehe ich auf iOS Chrome und anderen Browsern keine Werte, nur die Überschriften und die leere Textbox, auf Android Browsern tuts wieder so wie in W10
Da tut sich nix:
3 Balken, aber ohne Inhalt. Aufbau der Platine erfolgte nach Handbuch, nicht nach day18 im web
Bis jetzt habe ich dieses Problem im Firefox auch…
Habe folgendes ab Zeile 62 eingetragen (ein Hinweis von unten):
Serial.println(String(getTemp()));
Serial.println(String(getRF()));
Serial.println(String(getLight()));
wobei dann folgende Werte ausgegeben werden:
-273.20
65
0
Die Messungen schlagen wohl trotzdem fehl :-
Siehe mein Kommentar
Der Aufruf http.sendStreamHeader(id) gibt immer false zurück auch wenn der HTTP request erfolgreich war, da ja nur der Header übertragen wurde aber die Verbindung noch offen für die Daten bleibt.
Der folgende Sketch funktioniert:
/*
TCP-Server Climate with server send events
Change SSID and PASSWORD.
*/
#include
#include
#include
#include “Websites.h”
#include
//#define SSID “Lechner LAN”
//#define PASSWORD “Guadalquivir2711”
#define LED_WLAN 13
#define TEMP A0
#define LIGHT A1
#define HUMIDITY A4
#define GND A5
#define DEBUG true
NanoESP nanoesp = NanoESP();
NanoESP_HTTP http = NanoESP_HTTP(nanoesp);
void setup() {
Serial.begin(19200);
nanoesp.init();
//! Only if you want to change the ACCESPOINT configuration
//nanoesp.configWifi(ACCESSPOINT, “NanoESP”, “”);
//! Only if you use a new Network
// nanoesp.configWifi(DUAL, SSID, PASSWORD);
//Dual Mode
nanoesp.configWifiMode(DUAL);
//delay(1000);
// Wait till Connected to WiFi
if (nanoesp.wifiConnected())digitalWrite(LED_WLAN, HIGH); else Serial.println(F(“Error WLAN Connect”));
//Start TCP Server
if (nanoesp.startTcpServer(80)) Serial.println(F(“TCP Server Activ”)); else Serial.println(F(“TCP Server Error”));
//Print IP in Terminal
Serial.println(nanoesp.getIp());
}
int streamId = -1;
byte errorCount;
void loop() {
String method, ressource, parameter;
int id ;
if (http.recvRequest(id, method, ressource, parameter)) {
Serial.println(“New Request from id :” + String(id) + “, method: ” + method + “, ressource: ” + ressource + ” parameter: ” + parameter);
if (ressource == “/”) {
http.sendFromFlash(id, index, sizeof(index));
nanoesp.closeConnection(id);
}
else if (ressource == “/eventclimate”) {
//Serial.println(“Send stream header”);
//new server send events connection
http.sendStreamHeader(id); //send stream header as response
streamId = id; //this id belongs to the sse-client
//Serial.println(“Got stream id ” + streamId);
sendStreamData(streamId,”msg”, “Connection established”); //send first message
}
else {
http.sendFromFlash(id, error404, sizeof(error404));
nanoesp.closeConnection(id);
}
}
if (streamId > -1) { //there is a stream client
//Serial.println(“Send results”);
if (!sendStreamData(streamId, “hum”, String(getRF()))) errorCount++; else errorCount = 0; //send server send event data
if (!sendStreamData(streamId, “light”, String(getLight()))) errorCount++;else errorCount = 0; //send server send event data
if (!sendStreamDataClose(streamId, “temp”, String(getTemp()))) errorCount++;else errorCount = 0; //send server send event data
if (errorCount > 6){ //client is disconnected if more than 6 transmissions were faulty
nanoesp.closeConnection(streamId);
streamId = -1;
errorCount = 0;
}
}
}
boolean sendStreamDataClose(int connectionId, String event, String data) {
//Serial.println(String (connectionId) + ” – ” + event + ” – ” + data);
return nanoesp.sendDataClose(connectionId, “event: ” + event + “\n” + “data: ” + data + “\n\n”);
}
boolean sendStreamData(int connectionId, String event, String data) {
//Serial.println(String (connectionId) + ” – ” + event + ” – ” + data);
return nanoesp.sendData(connectionId, “event: ” + event + “\n” + “data: ” + data + “\n\n”);
}
int getRF() { //get Humidity, source: http://www.elektronik-labor.de/AVR/Rmessung.html#rx2
long U, R;
double F;
pinMode(HUMIDITY, INPUT); // Ddrb.3 = 0 ‘Eingang
digitalWrite(HUMIDITY, HIGH); // Portb.3 = 1 ‘Pullup ein
U = analogRead(HUMIDITY); // U = Getadc(3)
digitalWrite(HUMIDITY, LOW); // Portb.3 = 0 ‘Pullup Aus
pinMode(HUMIDITY, OUTPUT); // Ddrb.3 = 1 ‘Nierohmig
pinMode(GND, INPUT); // Ddrb.4 = 0 ‘Eingang
digitalWrite(GND, HIGH); // Portb.4 = 1 ‘Pullup ein
U += analogRead(GND); // U = U + Getadc(2)
digitalWrite(GND, LOW); // Portb.4 = 0 ‘Pullup Aus
pinMode(GND, OUTPUT); // Ddrb.4 = 1 ‘Nierohmig. entladen
U = U / 2;
R = 3500 * U; //’R=35k*(U/1023-U)
U = 1023 – U;
R = (U > 0) ? R / U : 999999; //alternativ writing to: if(U>0) R = R/U; else R=999999;
R = R – 450; //- interner Bahnwiderstand 0,45 k
//Calculate Humidity
F = R / 280;
F = log(F); //ln f !!!
F = F * 8.9;
F = 100 – F;
F = round(F);
//Serial.println(String(R) + “Ohm ” + String(F) + “%”);
//delay(500);
return F;
}
double getTemp() {
//Source: http://playground.arduino.cc/ComponentLib/Thermistor2
double Temp;
int RawADC = analogRead(TEMP);
Temp = log(10000.0 * ((1024.0 / RawADC – 1)));
// =log(10000.0/(1024.0/RawADC-1)) // for pull-up configuration
Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp )) * Temp );
Temp = Temp – 273.15; // Convert Kelvin to Celcius
// Temp = (Temp * 9.0)/ 4.7 + 32.0; // Convert Celcius to Fahrenheit
Temp = round(Temp*10);
Temp = Temp/ 10;
return Temp;
}
int getLight() {
int vLight = analogRead(LIGHT);
return vLight;
}
Erstmal danke, werds ausprobieren.
Aber vielleicht solltest du vorsichtshalber dein Wlan-Passwort ändern ;)
“leere” Einträge bei #include funktioniert aber nicht bzw es gibt dann eine fehlermeldung…
Bei mir zeigt der Feuchtigkeitssensor *grob* andere Werte an als andere Hygrometer im Raum: Sensor: 60%, zwei Hygrometer: 41% und 44%
Wie kalibiert man den Sensor verünftig?
Kennt jemand den genauen Typ des Feuchtesensors bzw. hat ein Datenblatt dazu? Dann könnte ich z.B. mal die Formel prüfen.
Wenn Du die Webadresse:
http://www.elektronik-labor.de/AVR/Rmessung.html#rx2 aufrufst, kannst Du eine Menge vom “Ur-Entwicckler” über diese Implementierung erfahren.
Der Autor schreibt aber ganz klar: auch alle anderen “Haushalts-Messgeräte” liefern nur Größenordnungen.
Ich habe ein wenig mit der Zeile:
F = F * 8.9; -> F = F * 8.0;
experimentiert. Das Ändern, Kompilieren, Hochladen, Warten, Testen ist aber doch recht mühsam (zumal das bei mir auch nicht immer gleich mit dem Browser zusammen spielt). Eventuell ist es leichter die Anzeige im Browser per Javascript zu korrigieren…
Sollten bei euch keine Werte im Browser angezeigt werden, könnte das an einem Fehler in der NanoESP_HTTP Lib liegen. Die schnellste Variante hierfür ist, die Zeilen 68 bis 74 wie folgt zu ändern:
else if (ressource == “/eventclimate”) { //new server send events connection
/*if(*/http.sendStreamHeader(id); /*) {*/ //send stream header as response
streamId = id; //this id belongs to the sse-client
Serial.println(String(streamId) + ” Stream ID”);
sendStreamData(streamId,”msg”, “Connection established”); //send first message
/*}*/
}
gibt mir fehlermeldung für Deine Zeile 72: “Arduino:1.6.13 (Windows 10), Kort:”Arduino Nano, ATmega328”
A16_P18_Climate:68: error: stray ‘\342’ in program
else if (ressource == “/eventclimate�) { //new server send events connection
^
A16_P18_Climate:68: error: stray ‘\200’ in program
A16_P18_Climate:68: error: stray ‘\234’ in program
A16_P18_Climate:68: error: stray ‘\342’ in program
A16_P18_Climate:68: error: stray ‘\200’ in program
A16_P18_Climate:68: error: stray ‘\235’ in program
A16_P18_Climate:71: error: stray ‘\342’ in program
Serial.println(String(streamId) + � Stream ID�);
^
A16_P18_Climate:71: error: stray ‘\200’ in program
A16_P18_Climate:71: error: stray ‘\235’ in program
A16_P18_Climate:71: error: stray ‘\342’ in program
A16_P18_Climate:71: error: stray ‘\200’ in program
A16_P18_Climate:71: error: stray ‘\235’ in program
A16_P18_Climate:72: error: stray ‘\342’ in program
sendStreamData(streamId,�msg�, “Connection established�); //send first message
^
A16_P18_Climate:72: error: stray ‘\200’ in program
A16_P18_Climate:72: error: stray ‘\235’ in program
A16_P18_Climate:72: error: stray ‘\342’ in program
A16_P18_Climate:72: error: stray ‘\200’ in program
A16_P18_Climate:72: error: stray ‘\235’ in program
A16_P18_Climate:72: error: stray ‘\342’ in program
A16_P18_Climate:72: error: stray ‘\200’ in program
A16_P18_Climate:72: error: stray ‘\234’ in program
A16_P18_Climate:72: error: stray ‘\342’ in program
A16_P18_Climate:72: error: stray ‘\200’ in program
A16_P18_Climate:72: error: stray ‘\235’ in program
C:\Users\Bernd\Documents\Arduino\A16_P18_Climate\A16_P18_Climate.ino: In function ‘void loop()’:
A16_P18_Climate:68: error: expected primary-expression before ‘/’ token
else if (ressource == “/eventclimate�) { //new server send events connection
^
A16_P18_Climate:68: error: ‘eventclimate’ was not declared in this scope
else if (ressource == “/eventclimate�) { //new server send events connection
^
A16_P18_Climate:71: error: expected primary-expression before ‘ID’
Serial.println(String(streamId) + � Stream ID�);
^
A16_P18_Climate:72: error: ‘msg’ was not declared in this scope
sendStreamData(streamId,�msg�, “Connection established�); //send first message
^
A16_P18_Climate:72: error: ‘Connection’ was not declared in this scope
sendStreamData(streamId,�msg�, “Connection established�); //send first message
^
exit status 1
stray ‘\342’ in program
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
Hallo Bernd,
da hat es leider Unicode Anführungsstriche etc. übernommen und Kommentare lassen sich hier nicht editieren :-(
Die Zeile 69 darf keine if-Abfrage enthalten, da die aufgerufene Funktion nie “wahr” liefert. Also einfach den Methodenaufruf einbauen: http.sendStreamHeader(id);
Dafür muss Zeile 72 angepasst werden, da dann natürlich auch keine schließende Klammer vorkommen darf. 72 also löschen.
Viel Erfolg
Thomas
Hier ein Arduino Sketchbook-Sketch:
https://create.arduino.cc/editor/Thomas-ino/67052b1f-270c-4107-b2e5-a92eccbb0341/preview
Hi Thomas,
vielen Dank, der Austausch der Zeilen ab 69 hat geholfen.
Geschafft. Funktioniert.
Danke Thomas, jetzt klappts auch bei mir ;-)
Klappt leider bei mir nur beim ersten mal nach aktualisierung im Browser wieder das gleiche Bild (ohne Werte bzw. halber Balken :/ )
Vielen Dank!
Funktioniert jetzt
Danke,
aber ich habe es dann mit der von mOeps vorgestellten Änderung hingekriegt. läuft einwandfrei selbst nach umstart.
Zwei Probleme sind mir am heutigen Experiment aufgefallen:
1) Ich glaube im Schaltbild ist ein kleiner Fehler. Der Phototransistors ist überhaupt nicht mit den Pin A1 verbunden. Entweder muss der Phototransistors eins Steckplatz vor oder die Kabel eins zurück.
2) Der Aufruf “http.sendStreamHeader(id)” gibt immer false zurück. Deshalb wird die streamId nie gespeichert. Setzt man die Zuweisung “streamId = id;” außerhalb des If-Blocks gehts wunderbar.
Danke für den tipp ! ;) hab jetzt die Schaltung wie im Heft und das Programm in Zeile 62/63 ergänzt mit deiner Änderung. Nach einen reboot des Nano ging es dann auch bei mir.
aber leider nur 1x
nach einen weiteren neustart ging nix mehr.
Hallo m0ep,
die Zeichnung im Begleitheft ist korrekt, der Fehler betreffs der Verkabelung ist nur auf dem Bild der Web-site.
Deine Software-Änderung habe ich ausprobiert und seither bekomme ich auch Werte angezeigt. Aber … nur wenn ich mein tablet mit dem Wifi des Arduino verbinde und die Seite 192.168.4.1 aufrufe. Auf der Seite in meinem Wifi passiert nichts. Das Grundbild wird aufgebaut , aber keine Werte werden angezeigt.
Leider verstehe ich die Programmierung mangels Kenntnissen nicht, um nach dem Fehler zu suchen. Eine ausführlicher Kommentierung des programmcodes hätte ich mir eh von Anfang an gewünscht.
Gruß
Jürgen
Stimmt, im Begleitheft sieht die Schaltung OK aus (Ich mach das erste mal was mit Elektrotechnik, bin eigentlich Android-Entwickler). Ich guck in der Regel nur hier auf der Webseite, weil ich mich dann doch lieber überraschen lasse ;)
Das Programm benutzt zum Senden der Werte Server Side Events. Eventuell funktionieren die im Stationsbetrieb nicht richtig. Hab das Experiment selbst nur direkt mit dem NanoESP als Accesspoint ausprobiert.
jap, es muss wie in Tag 12 eine Spannungteilerschaltung sein. Der 10k Wiederstand von Tag 12 ist durch den 10k Poti enthalten
Danke für das Wort “Spannungteilerschaltung”, jetzt weiß ich auch was da genau passiert :D
Ja, danke. Das hats gebracht:
else if (ressource == “/eventclimate”) { //new server send events connection
streamId = id; //this id belongs to the sse-client
if (http.sendStreamHeader(id)) { //send stream header as response
sendStreamData(streamId,”msg”, “Connection established”); //send first message
}
}
Bild
Hallo Paulaner,
bist Du im Internet Explorer oder Edge unterwegs? Dort wird das verwendete -Tag nicht unterstützt. Chrome und Firefox zeigen die Balken hingegen an.
Viele Grüße
Thomas
Hi, ich habe es mit Firefox und Chrome probiert. Ich bekommen Balken, aber keine Werte. Die Balken Humidity und Light sind grau.
Ich habe mir in Zeile 63 noch eine Ausgabe eingebaut, um die Werte im seriellen Monitor zu sehen.
Serial.println(String(getRF()));
Serial.println(String(getLight()));
Serial.println(String(getTemp()));
Das funktioniert.
Der Seitenquelltext der Webseite scheint auch ok.
Der Balken wird mit “Tempertur:
” aufgebaut.
Das Javaskript soll die Balken und die Werte befüllen.
Das scheint nicht zu funktionieren.
Wo ist der Fehler?
PS: “Webseite.h”: NanoESP CLimate ändern in NanoESP CLimate und Current climate values from NanoESP: in Current climate values from NanoESP:
Mist, der Chat verschluckt Zeichen.
Zur Ergänzung: Balken werden mit dem Tag meter erzeugt.
In der Datei website.h ist der Tag title als tilte geschrieben. Dazu sollte der Text NanoESP Climate mit dem Tag für eine große Überschrift h1 eingefasst werden.
bei mir kommen die wete nach etwa 5 minuten
TCP Server Activ
AT+CIFSR
+CIFSR:APIP,”192.168.4.1″
+CIFSR:APMAC,”x:x:x:x:x:x”
+CIFSR:STAIP,”192.168.0.152″
+CIFSR:STAMAC,”x:x:x:x:x:x”
OK
New Request from id :0, method: GET, ressource: / parameter:
New Request from id :0, method: GET, ressource: /browserconfig.xml parameter:
New Request from id :0, method: GET, ressource: / parameter:
New Request from id :0, method: GET, ressource: / parameter:
Verbindung ist da, Anfragen im Monitor auch, aber die Seite zeigt keine Werte
Bei mir siehts geauso aus -leider fehlt eine Erklärung was der sketch macht im Detail ;-(
Hallo htaz,
siehe mein Kommentar ganz oben, das Programm ist u.U. fehlerhaft im Zusammenspiel mit der Library NanoESP-1.1. Außerdem funktioniert das HTML-Tag im Internet Explorer und Edge nicht. Dazu den Chrome oder Firefox nutzen.
Viele Grüße und viel Erfolg
Thomas
Nachtrag egal welcher Browser verwendet wird bzw welches wlan.
bei mir gehts nur mit firefox bei internet exporer gibts bei mir auch keine werte aufbau in der beschreibung ist auch fahlsch zumindest vom fototranistor