• SHOP-INFO: Kurze Pause!

    Im Zeitraum vom Mo. 25.03.2024 bis Di. 02.04.2024 erfolgt kein Versand. Shop-Bestellungen, welche in diesem Zeitraum getätigt werden, werden voraussichtlich erst wieder ab Mi. 03.04.2024 bearbeitet und verschickt.

    Euer WLANThermo Team wünscht euch schöne Ostertage!

Nano Cloud Service

s.ochs

BOFH
Teammitglied
Admin
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.
[automerge]1561797933[/automerge]
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:

Phantomias2006

Entwickler
Teammitglied
Admin
Vl sagst du uns was du da für einen Server betreibst... Plesk Onix als verwaltung mit nginx und Apache?
 

s.ochs

BOFH
Teammitglied
Admin
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.
[automerge]1561804133[/automerge]
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.
[automerge]1561804133[/automerge]
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
[automerge]1561813659[/automerge]
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
Teammitglied
Admin
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
[automerge]1561813659[/automerge]
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.
[automerge]1561816118[/automerge]
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
Teammitglied
Admin
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
[automerge]1561821403[/automerge]
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:

derjulidude

New member
Hallo,

ich spiele gerade mit dem Gedanken einen Nano v1+ zu kaufen.
Ich möchte gerne meinen eigenen Cloud Server nutzen, um die Daten länger als 24h speichern zu können.

Ich hätte einen strato webspace incl. PHP und mySQL Datenbank zur Verfügung. Reicht das aus oder muss der Server noch mehr können?


Fand die Idee, das wenn ihr schon alles so schön offen anbietet, das selbst zu betreiben ganz Charmant

Dem kann ich nur zustimmen :)
Ist es für die Zukunft geplant, die Cloud Serveradresse per GUI einstellen zu können?

SG Julian
 

s.ochs

BOFH
Teammitglied
Admin
Du kannst die Cloud umleiten, nicht direkt übers Webinterface, aber es geht. Wenn du aber eh einen Server am laufen hast, ruf dir die Daten einfach per http ab, dann bist auch nicht an die Intervallzeiten der Cloud gebunden.
 

derjulidude

New member
Ich wollte das ganze anfangs erstmal mit so wenig Aufwand wie möglich zum Laufen bringen - daher die Idee eure Implementierung auf meinen Strato Webspace zu legen ;-) (vorausgesetzt das funktioniert ?‍♂️)
 

s.ochs

BOFH
Teammitglied
Admin
Wie es funktioniert, steht ja hier im Fred. Den Rest musst du ausprobieren. Die WLANThermo Cloud läuft auch auf einem Strato Server.
 
Oben Unten