iswifitesting's People
iswifitesting's Issues
restart ISM
Wpis w permlogu po wysłaniu 0xCAFE na /ISM010_restart jest:
"API restart"
Bardziej czytelne będzie:
" Restart ISM0-10"
nagłówek w listach błedów i zmian
/ListErrors, /Properties/LastChange zwracają pierwszą linijkę pliku:
Nie powinna być ona wyświetlana.
Skanowanie ISM0-10
kanowanie ISM0-10 powinno dodatkowo zawierać parametry:
• 11
• 8
• 7
JH:
dodalem
MR 13.11.18:13:00
są :)
File List
W odpowiedzi na otrzymałem:
“permanent.log,,”
W sytuacji, gdy na DC znajduje się:
Directory: E:\iswifi
Mode LastWriteTime Length Name
-a---- 02/01/2098 01:26 372 permanent.log
-a---- 02/01/2098 01:27 8655 1970-01.log
-a---- 02/01/2098 01:27 368 errors.log
JH:
czy od wywolania /FileList nie bylo zadnych operacji kasowania plikow?
a moze jeszcze nie byly utworzone pliki? ale to tylko przy wczesniejszej wersji, bo ostatnio tworze je na poczatku
musze sprawdzic, czy plik . i .. nie jest tutaj powodem dwoch przecinkow po permanent.log
c
MR 13.11.18:13:00
Sytuacja nadal taka sama: Pliki są na kardzie, nie ma operacji kasowania a /File list zwraca:
/FileList (200, ',,permanent.log,,,')
Jakaś wskazówka moze być w ilosci przecinków przed I po permanen.log
Wersja API
W tak zwanym “międzyczasie” zmieniliśmy jeden z parametrów UART na string, oraz dodaliśmy kasowanie awarii I reset ISM0-10 – w tym momencie API jest w wersji 1.0.4
JH:
zgadza sie, wykreslilbym tez UART2, bo nie korzystamy z tego portu, mial byc na XPort'a
MR 13.11.18:13:00
miał być na drugi port RS485 – do rpacy jako repeater – tymczasowo zrezygnowaliśmy z tej funkcji – ale moze ona jeszce wrócić.
Wpisy do permlogu
Wpisy do permlogu:
• reset - działą
• zmiana czasu – działa
• kasowanie listy błędów -
JH:
to dobrze
SSID
Może sie zdarzyć, że dwa urządzenia będą zainstalowane w niewielkiej odległości od siebie czy możemy ustalić SSID tak samo jak “Unique ID”?
JH:
moglibysmy, ale modul ESP ma jakis problem z narzuconym SSID, mimo, ze ustawiam, to i tak ma swoje ESP_xxxx
wysylam mu "AT+CWHOSTNAME="ISWiFi"\r\n"
przy okazji, to kiedys rozmawialismy o tym, zeby zrobic zapis do Properties/Firmware, /Hardware i Id, tylko jesli jest tam domyslny nr 0 lub pusty string dla ID. Nie zrobilem tego jeszcze. Pytanie tylko, czy te wartosci maja byc przechowywane w pliku na karcie SD, czy jakos zupelnie inaczej?
MR 13.11.18:13:00
może CWSAP?
https://room-15.github.io/blog/2015/03/26/esp8266-at-command-reference/#AT+CWSAP
Firmware, hardware, ID
JH:
a co z ID? trzymamy to na karcie razem z reszta plikow?
pulste listy błędów i plików
zapytanie na http://192.168.4.1:80/Errors/ErrorList zwraca 404 po uduchomieniu świeżo zaprogramowanego procesora - lista (pusta) pojawia się dopiero po kolejnym restarcie
zapytanie na http://192.168.4.1:80/FileList po uduchomieniu świeżo zaprogramowanego procesora zwraca pusty string - lista pojawia się dopiero po kolejnym restarcie
puste listy plikow sprawdze, moze plikow jeszcze po prostu nie ma, bo nie bylo zdarzen do zapisania
Przesunięcie błędów
• Jeśli ISM0-10 ma błąd E8, to ISWiFi zgłasza ("Przekroczona temperatury spalin") co jest błędęm E9
• Jeśli ISM0-10 ma błąd E6, to ISWiFi zgłaza ("Blad czujnika temperatury spalin") co jest bledem E7
JH
to bylo na ostatniej wersji czy wczesniejszej? jesli na ostatniej, to w pliku errors.log powinien byc wpis z nr bledu i opisem, ktory takze zawiera numer (to bylo wlasnie zmenione). Inna opcja, to sterownik ISM010 wysyla co innego na modbus, a co innego pokazuje na wyswietlaczu, ale log odpowie na to pytanie
MR 13.11.18:13:00
/ISMAll zwraca:
/ISM010_all (200, ((16, 0), (15, 0), (14, 24), (13, 0), (12, 32767), (11, 0), (10, 0), (9, 8), (8, 0), (7, 0), (6, 0), (5, 0), (4, 0), (3, 1), (2, 20)))
Gdzie rejestr 9 zawiera informacje o błędzie – w tym przypadku błąd 8. E8 jest również wyświetlany na ISM010.
Natomiast /LastError zwraca:
/Errors/LastError (200, 'E9\tPrzekroczona temperatury spalin')
Wiec ISWiFi prawdłowo odczytuje numer błędu – kucha pojawia sie przy tłumaczeniu numetka na tekst
File
Nie można odczytać logu nawet jeśli system go listuje
/FileList (200, 'permanent.log,,')
/File/pernament.log (404, 'Not found')
literowka w /File/pernament.log (404, 'Not found'),
akkolwiek sytuacja nie jest niemozliwa, bo gdyby akurat trwal zapis do pliku, to odczyt bylby zablokowany, tutaj mam ustawiony maksymalny czas oczekiwania na synchronizacje z systemem plikow na 1s, sam zapis trwa kilkanascie ms, wiec nie powinno sie zdarzyc dopoki zapisujemy male kawalki danych
MR 13.11.18:13:00
mea culpa – działa :)
/ISM010_{xxx}
ie mogę uzystkać dostępu do parametrów/rejestrów ISM0-10 poprzez “/ISM010_{xxx}”
JH:
w specyfikacji 1.02 bylo /ISM010/{xxx}, zmienilem tak jak w 1.04
MR 13.11.18:13:00
działa w formacie np /ISM010_9 bez dodatkowych zer – nie testowałem z zerami
kasowanie plików
Jak wygląda w tej chwili rotacja plików logów?
W mailach z 30.01i z 6.02 zaczęliśmy o tym rozmwaiać, ale nie wiem jaka jest końcowa implementacja.
Jeśli istnieje wiele plików errorlog, to zapytanie GET /Errors/ErrorList zwróci mi zawartość jedynie najnowszego pliku, czy wszystkich?
Jesli w tej sytuacji wyśle zapytanie DELETE /Errors/ErrorList to skasowane zostaną wszystkie pliki?
Parameter_
Żeby utrzymać spójność z /ISM010_{xxx} chcę również zaztosować “” przy dostępie do parametrów: Parameter{xxx}. Dodałem również notkę o obcinaniu początkowych zer, żeby misć pewnosć, że parametr 1 jest dostępny pod _1 a nie np. _001.
JH:
zmienilem, mozna wysylac z zerami poczatkowymi lub bez, zadziala zawsze
MR 13.11.18:13:00
działa bez dodatkowych zer – nie testowałem z zerami
Data Unixowa w pierwszej linii każdego pliku
Perman.log i histor.log mają w pierwszej linijce (tworzenie pliku) unixową datę - params i error log jej nie posiadają. Dla spójności niech data unixowa będzie we wszystkich plikach.
date unixowa moge dodac do kazdego pliku,
Błędny odczyt danych z ISM010
Czasem odpytując parametry ISM010 otrzymuję wyniki z dodatkowym bajtem 0x02 na pozycji 0x0000FF0000:
/ISM010_501 (200, 131074, b'\xce\x00\x02\x00\x02')
/ISM010_502 (200, 131077, b'\xce\x00\x02\x00\x05')
/ISM010_503 (200, 131072, b'\xce\x00\x02\x00\x00')
/ISM010_504 (200, 131132, b'\xce\x00\x02\x00<')
/ISM010_505 (200, 131077, b'\xce\x00\x02\x00\x05')
/ISM010_506 (200, 131077, b'\xce\x00\x02\x00\x05')
/ISM010_507 (200, 131072, b'\xce\x00\x02\x00\x00')
/ISM010_508 (200, 131077, b'\xce\x00\x02\x00\x05')
/ISM010_509 (200, 131097, b'\xce\x00\x02\x00\x19')
/ISM010_510 (200, 131082, b'\xce\x00\x02\x00\n')
/ISM010_511 (200, 131172, b'\xce\x00\x02\x00d')
/ISM010_512 (200, 131086, b'\xce\x00\x02\x00\x0e')
/ISM010_513 (200, 131072, b'\xce\x00\x02\x00\x00')
/ISM010_514 (200, 131072, b'\xce\x00\x02\x00\x00')
/ISM010_515 (200, 131073, b'\xce\x00\x02\x00\x01')
/ISM010_516 (200, 131073, b'\xce\x00\x02\x00\x01')
/ISM010_517 (200, 131077, b'\xce\x00\x02\x00\x05')
/ISM010_518 (200, 131077, b'\xce\x00\x02\x00\x05')
/ISM010_519 (200, 131122, b'\xce\x00\x02\x002')
/ISM010_520 (200, 131082, b'\xce\x00\x02\x00\n')
/ISM010_521 (200, 131302, b'\xce\x00\x02\x00\xe6')
/ISM010_522 (None, "('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))")
/ISM010_523 (200, 131073, b'\xce\x00\x02\x00\x01')
/ISM010_524 (200, 131072, b'\xce\x00\x02\x00\x00')
/ISM010_525 (200, 131073, b'\xce\x00\x02\x00\x01')
/ISM010_526 (200, 131073, b'\xce\x00\x02\x00\x01')
/ISM010_527 (200, 131072, b'\xce\x00\x02\x00\x00')
/ISM010_528 (200, 131072, b'\xce\x00\x02\x00\x00')
/ISM010_529 (200, 131077, b'\xce\x00\x02\x00\x05')
/ISM010_530 (200, 131122, b'\xce\x00\x02\x002')
/ISM010_531 (200, 131072, b'\xce\x00\x02\x00\x00')
/ISM010_532 (200, 131077, b'\xce\x00\x02\x00\x05')
/ISM010_533 (200, 131572, b'\xce\x00\x02\x01\xf4')
/ISM010_534 (200, 131672, b'\xce\x00\x02\x02X')
Natomiast czasem działą poprawnie:
/ISM010_501 (200, 2, b'\x02')
/ISM010_502 (200, 5, b'\x05')
/ISM010_503 (200, 0, b'\x00')
/ISM010_504 (200, 60, b'<')
/ISM010_505 (200, 5, b'\x05')
/ISM010_506 (200, 5, b'\x05')
/ISM010_507 (200, 0, b'\x00')
/ISM010_508 (200, 5, b'\x05')
/ISM010_509 (200, 25, b'\x19')
/ISM010_510 (200, 10, b'\n')
/ISM010_511 (200, 100, b'd')
/ISM010_512 (200, 14, b'\x0e')
/ISM010_513 (200, 0, b'\x00')
/ISM010_514 (200, 0, b'\x00')
/ISM010_515 (200, 1, b'\x01')
/ISM010_516 (200, 1, b'\x01')
/ISM010_517 (200, 5, b'\x05')
/ISM010_518 (200, 5, b'\x05')
/ISM010_519 (200, 50, b'2')
/ISM010_520 (200, 10, b'\n')
/ISM010_521 (200, 230, b'\xcc\xe6')
/ISM010_522 (200, 30, b'\x1e')
/ISM010_523 (200, 1, b'\x01')
/ISM010_524 (200, 0, b'\x00')
/ISM010_525 (200, 1, b'\x01')
/ISM010_526 (200, 1, b'\x01')
/ISM010_527 (200, 0, b'\x00')
/ISM010_528 (200, 0, b'\x00')
/ISM010_529 (200, 5, b'\x05')
/ISM010_530 (200, 50, b'2')
/ISM010_531 (200, 0, b'\x00')
/ISM010_532 (200, 5, b'\x05')
/ISM010_533 (None, "('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))")
/ISM010_534 (200, 600, b'\xcd\x02X')
Pomiędzy tymi dwoma seriami wywołań nie byy tylko inne zapytania GET.
Problem z Logiem bierzącym (/File/1970-01.log )
Mam spory prblem z odczytywaniem logu birzącego. Minimalny skrypt:
`import socket
def getLogFile():
data=b""
request = b'GET /File/1970-01.log HTTP/1.1\r\nHost: 192.168.4.1\r\nExpect: application/msgpack\r\n\r\n'
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(30)
s.connect(("192.168.4.1", 80))
s.send(request)
while 1:
try:
line = s.recv(1024)
print (line)
data+=line
except socket.timeout:
break
if not data:
break
s.close()
print (data)
print (len(data))`
Zwraca bardzo różne wartości. Często jest to tylko sam nagłówek, bądź nagłówek+część treści i zaraz po tym znów nagłówek i część pliku od początku. Nie udało mi się odczytać całej zawartości pliku.
Przykładowy rezultat:
b'HTTP/1.1 200 OK\r\nContent-Type: application/msgpack\r\nContent-Length: 15078\r\n\r\n'
b'HTTP/1.1 200 OK\r\nContent-Type: application/msgpack\r\nContent-Length: 15078\r\n\r\n'
77
lub:
b'HTTP/1.1 200 OK\r\nContent-Type: application/msgpack\r\nContent-Length: 15486\r\n\r\n'
b'\xda<{'
b'46853,1970-01-01 13:00.52 creating the file\r\n46853,ISM010_16,0,2086\r\n46853,ISM010_14,0,24\r\n46854,ISM010_12,0,179\r\n46854,State changes: State 0xffff -> STOP\r\n46856,ISM010_3,0,14\r\n46857,ISM010_16,2086,2503\r\n46858,ISM010_12,179,180\r\n46862,ISM010_12,180,181\r\n46866,ISM010_12,181,182\r\n46889,ISM010_12,182,183\r\n46893,ISM010_12,183,184\r\n46929,ISM010_16,0,1669\r\n46930,ISM010_14,0,24\r\n46930,ISM010_12,0,184\r\n46931,State changes: State 0xffff -> STOP\r\n46933,ISM010_3,0,14\r\n46933,ISM010_16,1669,2504\r\n46937,ISM010_16,2504,2'
b'503\r\n47115,ISM010_16,2503,2504\r\n47119,ISM010_16,2504,2503\r\n47159,ISM010_14,24,23\r\n47163,ISM010_14,23,24\r\n47305,ISM010_3,14,10\r\n47306,ISM010_12,184,5401\r\n47309,ISM010_3,10,1\r\n47309,ISM010_2,0,20\r\n47310,ISM010_12,5401,32767\r\n47311,ISM010_9,0,8\r\n47313,ISM010_3,1,4\r\n47313,ISM010_2,20,4\r\n47315,ISM010_9,8,0\r\n47317,ISM010_3,4,14\r\n47317,ISM010_2,4,0\r\n47318,ISM010_12,32767,4990\r\n47322,ISM010_12,4990,182\r\n47326,ISM010_12,182,183\r\n47330,ISM010_12,183,184\r\n47349,ISM010_16,2503,2504\r\n47353,ISM010_16,2504,2503\r\n47357,ISM'
b'010_16,2503,2504\r\n47361,ISM010_16,2504,2503\r\n47404,ISM010_16,2503,2504\r\n47408,ISM010_16,2504,2503\r\n47543,ISM010_16,2503,2502\r\n47547,ISM010_16,2502,2503\r\n48204,ISM010_16,2503,2502\r\n48207,ISM010_16,2502,2503\r\n48287,ISM010_16,2503,2502\r\n48291,ISM010_16,2502,2503\r\n48338,ISM010_16,2503,2504\r\n48342,ISM010_16,2504,2503\r\n48500,ISM010_16,2503,2504\r\n48504,ISM010_16,2504,2503\r\n48532,ISM010_16,2503,2504\r\n48536,ISM010_16,2504,2503\r\n48797,ISM010_14,24,23\r\n48801,ISM010_14,23,24\r\n48826,ISM010_12,184,183\r\n48838,ISM010_12,18'
b'HTTP/1.1 200 OK\r\nContent-Type: application/msgpack\r\nContent-Length: 15486\r\n\r\n\xda<{46853,1970-01-01 13:00.52 creating the file\r\n46853,ISM010_16,0,2086\r\n46853,ISM010_14,0,24\r\n46854,ISM010_12,0,179\r\n46854,State changes: State 0xffff -> STOP\r\n46856,ISM010_3,0,14\r\n46857,ISM010_16,2086,2503\r\n46858,ISM010_12,179,180\r\n46862,ISM010_12,180,181\r\n46866,ISM010_12,181,182\r\n46889,ISM010_12,182,183\r\n46893,ISM010_12,183,184\r\n46929,ISM010_16,0,1669\r\n46930,ISM010_14,0,24\r\n46930,ISM010_12,0,184\r\n46931,State changes: State 0xffff -> STOP\r\n46933,ISM010_3,0,14\r\n46933,ISM010_16,1669,2504\r\n46937,ISM010_16,2504,2503\r\n47115,ISM010_16,2503,2504\r\n47119,ISM010_16,2504,2503\r\n47159,ISM010_14,24,23\r\n47163,ISM010_14,23,24\r\n47305,ISM010_3,14,10\r\n47306,ISM010_12,184,5401\r\n47309,ISM010_3,10,1\r\n47309,ISM010_2,0,20\r\n47310,ISM010_12,5401,32767\r\n47311,ISM010_9,0,8\r\n47313,ISM010_3,1,4\r\n47313,ISM010_2,20,4\r\n47315,ISM010_9,8,0\r\n47317,ISM010_3,4,14\r\n47317,ISM010_2,4,0\r\n47318,ISM010_12,32767,4990\r\n47322,ISM010_12,4990,182\r\n47326,ISM010_12,182,183\r\n47330,ISM010_12,183,184\r\n47349,ISM010_16,2503,2504\r\n47353,ISM010_16,2504,2503\r\n47357,ISM010_16,2503,2504\r\n47361,ISM010_16,2504,2503\r\n47404,ISM010_16,2503,2504\r\n47408,ISM010_16,2504,2503\r\n47543,ISM010_16,2503,2502\r\n47547,ISM010_16,2502,2503\r\n48204,ISM010_16,2503,2502\r\n48207,ISM010_16,2502,2503\r\n48287,ISM010_16,2503,2502\r\n48291,ISM010_16,2502,2503\r\n48338,ISM010_16,2503,2504\r\n48342,ISM010_16,2504,2503\r\n48500,ISM010_16,2503,2504\r\n48504,ISM010_16,2504,2503\r\n48532,ISM010_16,2503,2504\r\n48536,ISM010_16,2504,2503\r\n48797,ISM010_14,24,23\r\n48801,ISM010_14,23,24\r\n48826,ISM010_12,184,183\r\n48838,ISM010_12,18'
1616
Czasy
Otrzymałem taką odpowiedź na:
200, (('/ISM010_available', 1), ('/Time/Time', 69372), ('/Time/SystemStartTime', 69181), ('/Time/SystemUptime', 191), ('/Runtime/LastIgnition', 0), ('/Runtime/StateUptime', 289),…
Jak to się mogło stać, że '/Time/SystemUptime', wynosi 191 a Runtime/StateUptime', 289? Jeśli wynika to z “pamiętania” przez system stanu z poprzednego uruchomienia, to powinniśmy z tej opcji zrezygnować I maksymalne czasy powinny wynosić Runtime/StateUptime
JH:
brak odczytu z rtc i zapisu wartosci poczatkowej dla StateUptime (byla wartosc 0), dla SystemUptime bylo to zrobione i przy odejmowaniu wyszlo ok, a dla StateUptime odejmowalem 0 i dlatego wyszlo wiecej niz SystemUptime, poprawione
MR 13.11.18:13:00
Niestety wciąż przy odpytaniu propertiesSettings dostałem:
/Properties/Settings (200, (('/ISM010_available', 1), ('/Time/Time', 138018), ('/Time/SystemStartTime', 138014), ('/Time/SystemUptime', 4), ('/Runtime/LastIgnition', 0), ('/Runtime/StateUptime', 239)
gdzie system uptime jest mniejszy niż state uptime.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.