Nano Cloud Service

s.ochs

BOFH
Kann ich dir aktuell leider auch nicht beantworten, warum da ein 301 zurück kommt. Wird denn im eingestellten Intervall gesendet? Die Antwort vom Server dürfte sich hauptsächlich auf die Anzeige der "Wolke" auswirken. Gesendet werden sollte ja dennoch. Kann allerdings sein, dass ich da irgendwo eine Abfrage eingebaut habe, die das Senden einstellt, wenn die Serverantwort beim Start nicht passt. Muss ich selbst erst nachsehen.
Der ESP-Client ist etwas eigenwillig, die Einstellung auf den aktuellen Nano-Server hat auch etwas Anpassung benötigt. Kannst du serverseitig mal ein Connection:close statt des keep-alive einstellen? Wie gesagt, der Client muss nach dem Senden beendet werden, sonst wird nicht neu gesendet. Der Client muss asynchrone neben dem Hauptprozess mitlaufen, sonst würde jedes Senden eine Unterbrechung im Messbetrieb bedeuten. Das führt dazu, dass Senden und Empfangen getrennte Prozesse sind, teilweise auch in sich getrennt, damit sie zeitlich zwischen den Hauptprozess passen. Wenn dann die Antwort vom Server nicht passt, kann der Prozess nicht korrekt abgeschlossen werden.
Die Antwort vom Server passt auch noch nicht, sollte ja ein JSON sein, vll kann @Phantomias2006 dazu noch was sagen.
 

Scorpion

New member
Kann ich dir aktuell leider auch nicht beantworten, warum da ein 301 zurück kommt. Wird denn im eingestellten Intervall gesendet?
Nein, wahrscheinlich hat der Nano ein Problem mit dem Body vom 301. Es dauert dann irgendwie 1-2min bis er einen neuen request macht.

Kannst du serverseitig mal ein Connection:close statt des keep-alive einstellen?
Kann man das auf der Serverseite einstellen ? Ich wüsste nicht wie das bei meinem gehosteten Webserver einstellen kann. Müsste nicht der Client beim Request die Connection angeben ?

Die Antwort vom Server passt auch noch nicht, sollte ja ein JSON sein, vll kann @Phantomias2006 dazu noch was sagen.
Das liegt eben an der 301-Antwort.
Post automatically merged:

Das 301 Problem ist gelöst. Ich musste noch ein slash am Ende von page einfügen:

Code:
{"url":{"api":{"host":"*********.ch","page":"/nano/api/"},"note":{"host":"*********.ch","page":"/nano/api/"},"cloud":{"host":"*********.ch","page":"/nano/api/"}}}
Aber es dauert immer noch 1-2 Minuten statt 15min, wahrscheinlich wegen dem keep-alive. Kann man auf dem Nano irgendwie einrichten dass Connection:close requested wird ?
 
Zuletzt bearbeitet:

s.ochs

BOFH
Kann man auf dem Nano irgendwie einrichten dass Connection:close requested wird ?
Geh mal in Platformio in die c_init.h und suche nach dieser Zeile:

Code:
command += F("Content-Type: application/json\r\n");
Müsste Zeile 1014 sein.
Unter diese Zeile setzt du mal diese Zeile:

Code:
command += F("Connection: close\r\n");
Vor die Zeile mit der Content-Length. Kompilieren und aufs Nano hochladen. Dann mal testen was passiert.
Ich kann es diese WE selbst nicht testen.
Post automatically merged:

Ach warte: setzt die Zeile besser vor die Zeile mit User-Agent (Zeile 1020). Also außerhalb der IF Anweisung.
 

Scorpion

New member
Geh mal in Platformio in die c_init.h und suche nach dieser Zeile:

Code:
command += F("Content-Type: application/json\r\n");
Müsste Zeile 1014 sein.
Unter diese Zeile setzt du mal diese Zeile:

Code:
command += F("Connection: close\r\n");
Vor die Zeile mit der Content-Length. Kompilieren und aufs Nano hochladen. Dann mal testen was passiert.
Ich kann es diese WE selbst nicht testen.
Post automatically merged:

Ach warte: setzt die Zeile besser vor die Zeile mit User-Agent (Zeile 1020). Also außerhalb der IF Anweisung.
Danke für diesen Hinweis. Hatte zwar die Stelle zuvor im Code gesucht aber nicht gefunden. Habe nun die Änderung vorgenommen. Jetzt antwortet der Server auch mit einem connection close :)

Ok, dann trage bei nginx bitte eine zusätzliche Anweisung ein wie im Bild ersichtlich.
Anhang anzeigen 1950
Diese Option erübrigt sich nun

Jetzt muss ich nur noch die Cloud-Applikation auf dem Server zum Laufen zu bringen. Im Moment zeigt er mir keine Werte & Kurve an obwohl die Werte in der Datenbank drin sind

1951
Post automatically merged:

Zuvor bekomme ich die Fehlermeldung:

1952

Und im Log vom Server steht

Code:
019-06-29 15:06:00    [ERROR]: Database - Connecting true
 

Phantomias2006

Entwickler
Danke für diesen Hinweis. Hatte zwar die Stelle zuvor im Code gesucht aber nicht gefunden. Habe nun die Änderung vorgenommen. Jetzt antwortet der Server auch mit einem connection close :)



Diese Option erübrigt sich nun

Jetzt muss ich nur noch die Cloud-Applikation auf dem Server zum Laufen zu bringen. Im Moment zeigt er mir keine Werte & Kurve an obwohl die Werte in der Datenbank drin sind

Anhang anzeigen 1951
Post automatically merged:

Zuvor bekomme ich die Fehlermeldung:

Anhang anzeigen 1952

Und im Log vom Server steht

Code:
019-06-29 15:06:00    [ERROR]: Database - Connecting true
Schau dir mal das an:

Das lässt du als Cronjob laufen (vorher bitte die pfadangaben anpassen!)
Der Dienst lädt alles FW Versionen von Git und speichert diese in die DB. Vermutlich ist diese Tabelle bei dir noch leer.
 

Scorpion

New member
Ok. Im Moment habe ich die Beta drauf mit der Version v1.1.0beta . Ist diese Version auch im Git hinterlegt ?
 

Scorpion

New member
Nein, das ist aber egal. Hauptsache die DB ist mal befüllt und nicht leer 😉
Ok. die DB ist nun abgefüllt. Aber bleibt leider unverändert.
Post automatically merged:

Die URL die ich aufrufe lautet:
http://www.*********.ch/nano/cloud/index.html?api_token=******5d1684eff1

Folgende Fehlermeldung im Browser:
1956
 
Zuletzt bearbeitet:

Scorpion

New member
Im Browser
1958
(also nix :))

In der Console
1957

Im log
Code:
2019-06-29 16:42:12    [INFO ]: ############################################################
2019-06-29 16:42:12    [INFO ]: Connecting to the database...
2019-06-29 16:42:12    [INFO ]: getData call
2019-06-29 16:42:12    [INFO ]: ############################################################
2019-06-29 16:42:12    [INFO ]: Connecting to the database...
2019-06-29 16:42:12    [INFO ]: getData call
(Ich habe noch ein Log Aufruf in der Funktion getData hinzugefügt)
 

s.ochs

BOFH
Jetzt antwortet der Server auch mit einem connection close :)
Top 👍
Kannst du mal bitte mit der Erweiterung an den offiziellen Cloud-Server und testen ob es mit der zusätzlichen Zeile funktioniert. Eilt nicht, nur wenn du gerade eh dabei bist. Wenn das klappt, können wir die Änderung fest übernehmen. Ansonsten test ich es nächste Woche.
 

Scorpion

New member
Top 👍
Kannst du mal bitte mit der Erweiterung an den offiziellen Cloud-Server und testen ob es mit der zusätzlichen Zeile funktioniert. Eilt nicht, nur wenn du gerade eh dabei bist. Wenn das klappt, können wir die Änderung fest übernehmen. Ansonsten test ich es nächste Woche.
Das funktioniert wie geschmiert :)

Code:
POST / HTTP/1.1
Content-Type: application/json
Connection: close
Content-Length: 1272
User-Agent: WLANThermo nano
SN: ******
Host: api.wlanthermo.de

{"device":{"device":"nano","serial":"******","item":"n2E03o619a0","hw_version":"v2","sw_version":"v1.1.0beta","api_version":"1","language":"de"},"cloud":{"task":"save","api_token":"******5d177b8829","data":[{"system":{"time":"1561820059","unit":"C","soc":100,"charge":false,"rssi":-79,"online":2},"channel":[{"number":1,"name":"Wohnzimmer","typ":3,"temp":27.40,"min":20.00,"max":40.00,"alarm":0,"color":"#0C4C88"},{"number":2,"name":"Kanal 2","typ":0,"temp":999.00,"min":10.00,"max":35.00,"alarm":0,"color":"#22B14C"},{"number":3,"name":"Wohnzimmer","typ":0,"temp":999.00,"min":20.00,"max":40.00,"alarm":0,"color":"#EF562D"},{"number":4,"name":"Kanal 4","typ":0,"temp":999.00,"min":10.00,"max":35.00,"alarm":0,"color":"#FFC100"},{"number":5,"name":"Kanal 5","typ":0,"temp":999.00,"min":10.00,"max":35.00,"alarm":0,"color":"#A349A4"},{"number":6,"name":"Kanal 6","typ":0,"temp":999.00,"min":10.00,"max":35.00,"alarm":0,"color":"#804000"},{"number":7,"name":"Kanal 7","typ":0,"temp":999.00,"min":10.00,"max":35.00,"alarm":0,"color":"#5587A2"},{"number":8,"name":"Kanal 8","typ":0,"temp":999.00,"min":10.00,"max":35.00,"alarm":0,"color":"#5C7148"}],"pitmaster":[{"id":0,"channel":1,"pid":1,"value":0,"set":50.00,"typ":"off","set_color":"#ff0000","value_color":"#000000"}]}]}}
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 29 Jun 2019 14:54:19 GMT
Content-Type: application/json
Content-Length: 232
Connection: close
X-Powered-By: PHP/7.2.19
Access-Control-Allow-Origin: *
X-Powered-By: PleskLin

{"device":{"device":"nano","serial":"******","item":"n2E03o619a0","hw_version":"v2","sw_version":"v1.1.0beta","api_version":"1","language":"de"},"cloud":{"task":"true","api_token":"******5d177b8829"},"runtime":0.0022721290588378906}
Body belongs to header
[CLOUD]: 2
Post automatically merged:

Im Browser
Anhang anzeigen 1958
(also nix :))

In der Console
Anhang anzeigen 1957

Im log
Code:
2019-06-29 16:42:12    [INFO ]: ############################################################
2019-06-29 16:42:12    [INFO ]: Connecting to the database...
2019-06-29 16:42:12    [INFO ]: getData call
2019-06-29 16:42:12    [INFO ]: ############################################################
2019-06-29 16:42:12    [INFO ]: Connecting to the database...
2019-06-29 16:42:12    [INFO ]: getData call
(Ich habe noch ein Log Aufruf in der Funktion getData hinzugefügt)
Wenn ich den cloud vom Master-Branch verwende, funktioniert es einwandfrei :)

1960

@s.ochs @Phantomias2006: Danke euch erstmal herzlich für eure tatkräftige Hilfe (y)
 
Zuletzt bearbeitet:
Oben Unten