Nano Cloud Service

Phantomias2006

Entwickler
Im Logfile vom Webserver ist leider nichts zu sehen (keine Aufrufe). Beim Server habe ich den master Branch genommen.


Ok, werde ich machen


Da bin ich gerade am Anschlag. Verwende Arduino nun zum ersten mal und versuche das Projekt mit dieser Anleitung einzurichten: https://github.com/WLANThermo-nano/WLANThermo_nano_Software/wiki/Arduino_IDE
Aber der develop branch hat einen völlig anderen Ordner Struktur. Muss ich den Ordner Struktur vom master branch verwenden und die files aus dem develop branch kopieren ?
Vergiss Arduino, die Anleitung bezieht sich auf den Masterbranch. Installiere Visual Studio Code + Platform IO. Dann das Projekt laden und schon kannst du kompilieren/Aufspielen.
Post automatically merged:

Du bist leider noch 1-2 Monate zu früh für das was du vorhast. Deshalb ist der weg noch etwas holpriger da wir die Nano auf PlatformIO umgestellt haben und es noch kein Offizielles Release dafür gibt...
 

Phantomias2006

Entwickler
Wie genau sieht deine Adresse aus? Was hast du in url.json eingetragen? Wenn du die Links hier nicht posten willst, verfremde sie leicht, sodass die Struktur aber noch stimmt oder schick sie mir per PN.
Es muss klar zwischen der Hostadresse und dem Pfad am Host unterschieden werden. Wenn du im Browser IP/url.json aufrufst, solltest du auch sehen, welche Adressen aktuell drin stehen. Beim Systemstart werden diese Adressen ausgelesen und verwendet.
Okidoki, dann mal mit Visual Studio Code :) Den holprigen Weg nehme ich gerne auf mich ;)
Du solltest Steffen seine Frage auch noch beantworten. Wenn du im Webserver Error Logfile gar nichts siehst dann wird hier auch noch ein Problem sein...
 

s.ochs

BOFH
@Phantomias2006, sicher, dass er die beta braucht? Ich vermute die URLs sind noch nicht richtig getrennt. Deshalb wird zwar versucht zu senden, kann aber nicht, weil URL nicht passt. Am besten mal Nano am Seriellen Monitor betreiben, dann im Browser IP/clientlog aktivieren (gilt nur bis zum nächsten Neustart), dann sieht man im Log im Monitor den Http Request und die Response bei jedem Cloud-Aufruf.
 

Phantomias2006

Entwickler
@Phantomias2006, sicher, dass er die beta braucht? Ich vermute die URLs sind noch nicht richtig getrennt. Deshalb wird zwar versucht zu senden, kann aber nicht, weil URL nicht passt. Am besten mal Nano am Seriellen Monitor betreiben, dann im Browser IP/clientlog aktivieren (gilt nur bis zum nächsten Neustart), dann sieht man im Log im Monitor den Http Request und die Response bei jedem Cloud-Aufruf.
Jein, wenn er nur Apache ohne Nginx am laufen hat dann kann es sein dass der Header in der aktuellen Versionen Probleme macht und Apache die Verbindung blockt... Theoretisch kann er dann den Apache umkonfigurieren oder die Beta Installieren. Und der Master Branch der Cloud wird vermutlich sowieso nicht funktionieren mit der dem offiziellen Release.
Post automatically merged:

Abaer wie erwähnt lösen meine Maßnahmen nur Probleme die er erst bekommt wenn auf der Nano die Url korrekt läuft...
 

Scorpion

New member
Ich habe den Nano vermutlich abgeschossen beim Beta download. Jetzt versuche ich wieder die v1.0.6 mit dem Arduino aufzuspielen, schlägt leider auch fehl:
1938

Habe ich alles richtig eingestellt ?
 

Phantomias2006

Entwickler
Für Arduino brauchst du spezielle Libs.

Kannst mal ein paar Screenshots machen wie du die FW aufgespielt hast mit PlatformIO?
 

Scorpion

New member
Ok. ist gemacht.

Habe nun die URLs neu gesetzt. Die Abfrage /json.url ergibt folgendes:
1941

(Die Domain habe ich herausgelöscht. Steht dort ohne www oder http)

Auf dem Webserver habe ich die Files wie folgt abgelegt
1943

Im logs Verzeichnis api.wlanthermo.de/api_2019-06-27.log steht:

2019-06-27 23:26:00 [ERROR]: JSON invalide
2019-06-27 23:26:00 [DEBUG]: Contents of string
'
'


Wobei das von einem manuelle Aufruf auf die Adresse domain.ch/nano/api kommt.

Im Server Log kann ich vom Nano keine Aktivitäten feststellen
 

Anhänge

s.ochs

BOFH
Wie vermutet. Trenn mal bitte so:
Host: deinhost.ch
Page: /nano/api

Eventuell auch
Page: /nano/api/

musst du ausprobieren
 

Scorpion

New member
Jetzt kommen wir der Sache schon näher. Jetzt habe ich einen regelmässigen Aufruf, aber nicht im Intervall von 15 Sekunden wie eingestellt und ich habe auch keine Einträge in der SQL Datenbank (Tabelle cloud)

Auszug Server Protokoll:
1944
 

s.ochs

BOFH
Wie gesagt, am besten mal die erweitere LOG-Funktion per IP/clientlog aktivieren und mal im Seriellen Monitor das Senden beobachten. Wann und was geschickt wird. Kannst dir auch mal den Timestamp im JSON ansehen, passt der zur Ankunftszeit am Server? Der Client wird softwareseitig im eingestellten Intervall ausgeführt. Es wird dann nur nicht gesendet, wenn der vorherige Request (noch) nicht abgeschlossen ist. Es kann immer nur ein Client gleichzeitig existieren, mehr kann der kleine ESP nicht.
 

Scorpion

New member
Log Funktion habe ich aktiviert. Hier die Ausgabe vom Serial Interface:

Code:
[INFO]  Software/System restart
SDK version:1.5.3(aec24ac9)
                           [INFO]       FV: v1.1.0beta
[INFO]  SKETCH: 0x01 (403K)
[INFO]  EEPROM: 0xFB (2816B)
[INFO]  SPIFFS: 0xCB (192K)
[INFO]  FS: /index.html.gz      : 37.98KB
[INFO]  FS: /url.json   : 151B
[INFO]  Total: 169.38KB Used: 38.97KB
[INFO]  rEE: [{"SSID":"******","PASS":"*******"}]
[INFO]  l: /wifi.json
[INFO]  rEE: {"ch":8,"host":"NANO-******","ap":"NANO-AP","lang":"de","hwversion":2,"update":0,"getupd":"false","autoupd":true,"batmax":4180,"batmin":3550,"god":0,"typk":false,"pitsup":true,"batfull":-1,"pass":"admin","damper":false}
[INFO]  l: /system.json
[INFO]  rEE: {"temp_unit":"C","tname":["Wohnzimmer","Kanal 2","Wohnzimmer","Kanal 4","Kanal 5","Kanal 6","Kanal 7","Kanal 8"],"ttyp":[3,0,0,0,0,0,0,0],"tmin":[20.0,10.0,20.0,10.0,10.0,10.0,10.0,10.0],"tmax":[40.0,35.0,40.0,35.0,35.0,35.0,35.0,35.0],"talarm":[0,0,0,0,0,0,0,0],"tcolor":["#0C4C88","#22B14C","#EF562D","#FFC100","#A349A4","#804000","#5587A2","#5C7148"]}
[INFO]  l: /channel.json
[INFO]  rEE: {"PMQhost":"192.168.2.1","PMQport":1883,"PMQuser":"","PMQpass":"","PMQqos":0,"PMQon":false,"PMQint":30,"CLon":true,"CLtoken":"*****5d161cf5b5","CLint":15}
[INFO]  l: /thing.json
[INFO]  rEE: {"pm":[{"ch":0,"pid":1,"set":50.0,"act":0,"res":true,"val":100.00}],"pid":[{"name":"SSR SousVide","id":0,"aktor":0,"Kp":104.0,"Ki":0.200,"Kd":0.0,"DCmin":0.0,"DCmax":100.0,"jp":100,"ol":0},{"name":"TITAN 50x50","id":1,"aktor":1,"Kp":3.8,"Ki":0.010,"Kd":128.0,"DCmin":25.0,"DCmax":100.0,"jp":70,"ol":0},{"name":"Kamado 50x50","id":2,"aktor":1,"Kp":7.0,"Ki":0.019,"Kd":630.0,"DCmin":25.0,"DCmax":100.0,"jp":70,"ol":0}]}
[INFO]  l: /pit.json
[INFO]  rEE: {"onP":0,"tokP":"","idP":"","rptP":1,"svcP":0}
[INFO]  l: /push.json
[INFO]  l: /url.json
[INFO]  M24C02: 0x52
[INFO]  Hostname: NANO-******
mode : sta(60:01:94:**:**:**) + softAP(62:01:94:**:**:**)
                                                         add if0
                                                                bcn 0
                                                                     del if1
                                                                            add if1
                                                                                   dhcp server start:(ip:192.168.66.1,mask:255.255.255.0,gw:192.168.66.1)
                                                                                                                                                         bcn 100
                                                                                                                                                                [INFO]  AP: NANO-AP
[INFO]  AP IP: 192.168.66.1
[INFO]  HTTP server started
[INFO]  MAX1161x: 0x33
OFF: 0,  15,     0
OFF: 0,  14,     0
wifi: multi
wifi: *********
f r0, scandone
              state: 0 -> 2 (b0)
                                state: 2 -> 3 (0)
                                                 state: 3 -> 5 (10)
                                                                   add 0
                                                                        aid 2
                                                                             cnt

                                                                                 connected with *******, channel 13
                                                                                                                       dhcp client start...
                                                                                                                                           ip:192.168.1.49,mask:255.255.255.0,gw:192.168.1.1

[INFO]  STA: *********
[INFO]  IP: 192.168.1.49
[INFO]  mDNS startedbcn 0
                         del if1
                                pm open,type:2 0
                                                mode : sta(60:01:94:**:**:**)
                                                                             [INFO]     wifi: STA
[INFO]  UTC: 13:59:33 28.6.2019
[INFO]  Battery voltage: 4250mV,        charge: 99%
Server-URL
[INFO]  Saved: /url.json
[INFO]  Battery voltage: 4253mV,        charge: 99%


Ich habe dann alle ca. eine Minute folgende Ausgabe:

[INFO] Battery voltage: 4253mV, charge: 99%

mehr nicht. Wenn ich dann die URLs wieder zum Original-Server (api.wlanthermo.de) wechsle, da habe ich folgenden Output:

Code:
[INFO]  Software/System restart
SDK version:1.5.3(aec24ac9)
                           [INFO]       FV: v1.1.0beta
[INFO]  SKETCH: 0x01 (403K)
[INFO]  EEPROM: 0xFB (2816B)
[INFO]  SPIFFS: 0xCB (192K)
[INFO]  FS: /index.html.gz      : 37.98KB
[INFO]  FS: /url.json   : 142B
[INFO]  Total: 169.38KB Used: 38.97KB
[INFO]  rEE: [{"SSID":"*********","PASS":"********"}]
[INFO]  l: /wifi.json
[INFO]  rEE: {"ch":8,"host":"NANO-*******","ap":"NANO-AP","lang":"de","hwversion":2,"update":0,"getupd":"false","autoupd":true,"batmax":4180,"batmin":3550,"god":0,"typk":false,"pitsup":true,"batfull":-1,"pass":"admin","damper":false}
[INFO]  l: /system.json
[INFO]  rEE: {"temp_unit":"C","tname":["Wohnzimmer","Kanal 2","Wohnzimmer","Kanal 4","Kanal 5","Kanal 6","Kanal 7","Kanal 8"],"ttyp":[3,0,0,0,0,0,0,0],"tmin":[20.0,10.0,20.0,10.0,10.0,10.0,10.0,10.0],"tmax":[40.0,35.0,40.0,35.0,35.0,35.0,35.0,35.0],"talarm":[0,0,0,0,0,0,0,0],"tcolor":["#0C4C88","#22B14C","#EF562D","#FFC100","#A349A4","#804000","#5587A2","#5C7148"]}
[INFO]  l: /channel.json
[INFO]  rEE: {"PMQhost":"192.168.2.1","PMQport":1883,"PMQuser":"","PMQpass":"","PMQqos":0,"PMQon":false,"PMQint":30,"CLon":true,"CLtoken":"*******5d161cf5b5","CLint":15}
[INFO]  l: /thing.json
[INFO]  rEE: {"pm":[{"ch":0,"pid":1,"set":50.0,"act":0,"res":true,"val":100.00}],"pid":[{"name":"SSR SousVide","id":0,"aktor":0,"Kp":104.0,"Ki":0.200,"Kd":0.0,"DCmin":0.0,"DCmax":100.0,"jp":100,"ol":0},{"name":"TITAN 50x50","id":1,"aktor":1,"Kp":3.8,"Ki":0.010,"Kd":128.0,"DCmin":25.0,"DCmax":100.0,"jp":70,"ol":0},{"name":"Kamado 50x50","id":2,"aktor":1,"Kp":7.0,"Ki":0.019,"Kd":630.0,"DCmin":25.0,"DCmax":100.0,"jp":70,"ol":0}]}
[INFO]  l: /pit.json
[INFO]  rEE: {"onP":0,"tokP":"","idP":"","rptP":1,"svcP":0}
[INFO]  l: /push.json
[INFO]  l: /url.json
[INFO]  M24C02: 0x52
[INFO]  Hostname: NANO-*******
mode : sta(60:01:94:**:**:**) + softAP(62:01:94:**:**:**)
                                                         add if0
                                                                bcn 0
                                                                     del if1
                                                                            add if1
                                                                                   dhcp server start:(ip:192.168.66.1,mask:255.255.255.0,gw:192.168.66.1)
                                                                                                                                                         bcn 100
                                                                                                                                                                [INFO]  AP: NANO-AP
[INFO]  AP IP: 192.168.66.1
[INFO]  HTTP server started
[INFO]  MAX1161x: 0x33
OFF: 0,  15,     0
OFF: 0,  14,     0
wifi: multi
wifi: *********
f r0, scandone
              state: 0 -> 2 (b0)
                                state: 2 -> 3 (0)
                                                 state: 3 -> 5 (10)
                                                                   add 0
                                                                        aid 2
                                                                             cnt

                                                                                 connected with *********, channel 13
                                                                                                                       dhcp client start...
                                                                                                                                           ip:192.168.1.49,mask:255.255.255.0,gw:192.168.1.1

[INFO]  STA: *********
[INFO]  IP: 192.168.1.49
[INFO]  mDNS startedbcn 0
                         del if1
                                pm open,type:2 0
                                                mode : sta(60:01:94:**:**:**)
                                                                             [INFO]     wifi: STA
[INFO]  UTC: 14:07:26 28.6.2019
Body belongs to header
Server-URL
[INFO]  Saved: /url.json
[INFO]  cEE: 300 to: 679
[INFO]  wEE: (220) {"ch":8,"host":"NANO-*******","ap":"NANO-AP","lang":"de","hwversion":2,"update":0,"getupd":"false","autoupd":true,"batmax":4180,"batmin":3550,"god":0,"typk":false,"pitsup":true,"batfull":-1,"pass":"admin","damper":false}
Body belongs to header
[CLOUD]: 2
[INFO]  Battery voltage: 4253mV,        charge: 99%
Body belongs to header
[CLOUD]: 2
Body belongs to header
[CLOUD]: 2
[INFO]  Battery voltage: 4253mV,        charge: 99%
Body belongs to header
[CLOUD]: 2
Body belongs to header
[CLOUD]: 2
Ich habe dann alle ca. 15s folgenden Output:
Body belongs to header
[CLOUD]: 2
 

s.ochs

BOFH
Sieht mir nicht so aus, als wäre \clientlog aktiv. Wie gesagt, der Befehl gilt nur temporär, wird nicht gespeichert. Nach einem Neustart ist er wieder deaktiviert. Ich mach nachher mal ein Log, wie es aussehen soll.

Kontakt zu deinem Server besteht aber auf jeden Fall, ansonsten wäre diese Zeile nicht da:
[INFO] UTC: 13:59:33 28.6.2019
 

s.ochs

BOFH
Nano an Seriellen Monitor angeschlossen, dann gestartet und den Befehl /clientlog aktiviert. Danach erhält man bei jedem Senden an die Cloud folgende Ausgabe:

Code:
[INFO]    Battery voltage: 3945mV,    charge: 62%

POST / HTTP/1.1
Content-Type: application/json
Content-Length: 1261
User-Agent: WLANThermo nano
SN: 32xxxx
Host: api.wlanthermo.de

{"device":{"device":"nano","serial":"32xxxx","item":"n2E03o619a0","hw_version":"v2","sw_version":"v1.0.6","api_version":"1","language":"de"},"cloud":{"task":"save","api_token":"xxxxxx048c6bd010","data":[{"system":{"time":"1561760269","unit":"C","soc":62,"charge":true,"rssi":-51,"online":0},"channel":[{"number":1,"name":"Kanal 1","typ":0,"temp":999.00,"min":10.00,"max":35.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":"Kanal 3","typ":0,"temp":999.00,"min":10.00,"max":35.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":0,"value":0,"set":50.00,"typ":"off","set_color":"#ff0000","value_color":"#000000"}]}]}}

HTTP/1.1 200 OK
Server: nginx
Date: Fri, 28 Jun 2019 22:17:50 GMT
Content-Type: application/json
Content-Length: 228
Connection: close
X-Powered-By: PHP/7.2.19
Access-Control-Allow-Origin: *
X-Powered-By: PleskLin

{"device":{"device":"nano","serial":"32xxxx","item":"n2E03o619a0","hw_version":"v2","sw_version":"v1.0.6","api_version":"1","language":"de"},"cloud":{"task":"true","api_token":"xxxxxx048c6bd010"},"runtime":0.0040400028228759766}
Body belongs to header
[CLOUD]: 2
Der erste Block (ab POST) ist der Request an den Server. Header und Body in Form des /data-JSON. Der zweite Block (ab HTTP/1.1 200 OK) ist die Antwort vom Server. Wiederum Header und Body, in dem Fall das Antwort-JSON vom Server.

Edit: Die Ausgabe [CLOUD]: 2 gibt an, dass die Verbindung zum Server erfolgreich war und die Daten angekommen sind (im Webinterface erscheint die grüne Wolke im Header).
 
Zuletzt bearbeitet:

Scorpion

New member
Ah ok!

Jetzt werden wir schlauer. Ich bekomme von meinem Webserver eine 301 Moved Permanently Meldung. Es ist mir aber etwas schleierhaft warum.... Das dürfte nun das Problem sein. Merkwürdigerweise sagt er mir dass die neue Adresse identisch ist wie bei der Anfrage...

Ich weiss aber, dass mein Webserver, wenn ich die Adresse im Browser ohne www (domain.ch) eingebe, er dann automatisch auf www.domain.ch umleitet. könnte dieses Verhalten hier das Problem sein ? Ich habe dann unter domain die www hinzugefügt, aber das hat auch nichts genützt und ändert sich nichts.


Code:
POST /nano/api HTTP/1.1
Content-Type: application/json
Content-Length: 1270
User-Agent: WLANThermo nano
SN: ******
Host: *********.ch

{"device":{"device":"nano","serial":"******","item":"n2E03o619a0","hw_version":"v2","sw_version":"v1.1.0beta","api_version":"1","language":"de"},"cloud":{"task":"save","api_token":"******5d1684eff1","data":[{"system":{"time":"1561786649","unit":"C","soc":99,"charge":true,"rssi":-73,"online":0},"channel":[{"number":1,"name":"Wohnzimmer","typ":3,"temp":24.30,"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 301 Moved Permanently
Server: nginx
Date: Sat, 29 Jun 2019 05:37:30 GMT
Content-Type: text/html; charset=iso-8859-1
Content-Length: 237
Connection: keep-alive
Location: http://*********.ch/nano/api/
X-Powered-By: PleskLin

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
                                                  <html><head>
                                                              <title>301 Moved Permanently</title>
                                                                                                  </head><body>
                                                                                                               <h1>Moved Permanently</h1>
                                                                                                                                         <p>The document has moved <a href="http://*********.ch/nano/api/">here</a>.</p>
                </body></html>
                                D£'
á                                 (*eT$,AÅ>l±üÏ,p¹Æøø
hùØ     ¨¨÷W×áGà~oÈoúÒij 'zDÃ^58;T?@ÄÓ½þÉî¡=ç
bµ»KNþn\îË/:ØEcagð°fqëv`|-õ1ü{°}ƒÀOðAøÖÀ)"aÿËÓTõ¡ÃÌÜ'Í]?Lk?ñÕ²
                                                              CíR-ÊTª¿'){r¯¥J¯à?)ÔAMøFJôå±[Uê²KôK·÷«ÈZ¡XåíRÔx®xÊ6?ÑãÃð-1
                                                                                                                        -üü(
«Ì(C?Ý&ÍÝ4û·IoL*!Ï1(â - ø·þ%eh*¼×(s"l¦9(?äfjÿoýú§ÿ²÷A5/ ¨¹·Åßj,@ÁJS|@ßcÎ>Ï4ªiwü£iK&±A÷
£/ú¼gH                                                                                «Jâ!KÝÝÐþ×/2ÿG?" ·B
      \0[^=W@ôð×        yM¯zÐhâG        ÍiWAáµMKÝ+y¾câÈp
                                                        ½Wa-vyðÇ2?Å×îk;9&V8nJæGv¤"AÎl¶ð»£!JºD¢ZWÌù?n
                                                                                                    ¨J?»
                                                                                                        ¸¹ýÞEª«õ        ¾;      ¼)Ã^b¥ÙP?N°
Wenn ich dann den gleichen Post mit dem Postman an den Server schicke, bekommen ich 200, aber jedoch ein text/html content ohne Inhalt....

1962
 
Zuletzt bearbeitet:
Oben Unten