Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
sensenet [2019/07/19 14:40]
dron [Sensoric Firmware + Protocols]
sensenet [2019/09/04 11:04] (current)
over23 link na video z polaru
Line 3: Line 3:
 |**Project owner[S]:​**| [[user:​Overdrive]] -- [[user:​Ivan_Ahepjuk|Ivan_Ahepjuk]] -- [[user:​Dron|Dron]] -- [[user:​Cyberian]]| |**Project owner[S]:​**| [[user:​Overdrive]] -- [[user:​Ivan_Ahepjuk|Ivan_Ahepjuk]] -- [[user:​Dron|Dron]] -- [[user:​Cyberian]]|
 |**Interested:​** | [[user:​Dave_Page|Dave@Page]] -- [[user:​embargo|M. Bargo]] -- [[user:​duchar|Duchar]] -- [[user:​ruza]] -- [[user:​rainbof]] -- [[user:​adelajka]] | |**Interested:​** | [[user:​Dave_Page|Dave@Page]] -- [[user:​embargo|M. Bargo]] -- [[user:​duchar|Duchar]] -- [[user:​ruza]] -- [[user:​rainbof]] -- [[user:​adelajka]] |
-|**Related:​**| |+|**Related:​**| ​[[https://​polar.cz/​porady/​eko-magazin/​eko-magazin-21-03-2017-17-40|Video z POLAR TV, ktere vysvetluje, co delame, zacina kolem 05:48]]|
 |**Linkz:​**| https://​en.wikipedia.org/​wiki/​USB_dead_drop;​ https://​deaddrops.com/​db/?​page=map | |**Linkz:​**| https://​en.wikipedia.org/​wiki/​USB_dead_drop;​ https://​deaddrops.com/​db/?​page=map |
 | **License:​** | **__CLOSED SOURCE && afetr all core mebers goes ti public domain as viral GPL3 or higher__** [[https://​creativecommons.org/​licenses/​by-sa/​3.0/​|Uveďte původ-Zachovejte licenci CC BY-SA]] ​ | | **License:​** | **__CLOSED SOURCE && afetr all core mebers goes ti public domain as viral GPL3 or higher__** [[https://​creativecommons.org/​licenses/​by-sa/​3.0/​|Uveďte původ-Zachovejte licenci CC BY-SA]] ​ |
Line 20: Line 20:
 |sensoricnet-lora-0004| <1.0| no | Dron | testing | Lora, Opava, vyple | |sensoricnet-lora-0004| <1.0| no | Dron | testing | Lora, Opava, vyple |
 |NBIOT-0007| <1.0| no| martin_rysavy@centrum.cz| | bad sensor| |NBIOT-0007| <1.0| no| martin_rysavy@centrum.cz| | bad sensor|
-|NBIOT-0029| 1.0| yes| martin_rysavy@centrum.cz| | | +|NBIOT-0022| 1.0| nevi se |  | testing| OPC-N2 176861009 | 
-|NBIOT-0030| 1.0| notmartin_rysavy@centrum.cz| testing| OPC-N2 176861013 | +|NBIOT-0028| 1.0| no - see debugg chapter| martin_rysavy@centrum.cz| ​testingOPC-N2 176861006 ​
-|NBIOT-0031| 1.0| yes| martin_rysavy@centrum.cz| testing| OPC-N2 176861006 |+|NBIOT-0029| 1.0| yes - without BME280| mdostal.cz@gmail.com | OPC-N2 176861014, umisten v Labce, schazi BME280| 
 +|NBIOT-0030| 1.0| yes| | testing| OPC-N2 176861013, umisten v Labce za oknem 
 +|NBIOT-0031| 1.0| yes| over@labka.cz, 721 007 507 | testing/showtime| OPC-N2 176861006 |
 ||| | | | | ||| | | | |
  
Line 34: Line 36:
     * Ansible playbooky pro nasazení infra [[https://​github.com/​dron23/​SensoricNet-ansible]]     * Ansible playbooky pro nasazení infra [[https://​github.com/​dron23/​SensoricNet-ansible]]
     * Forknuté repo ze kterého dělám pull requesty zpět do Ivanova SensoricNet-particle-meter [[https://​github.com/​dron23/​SensoricNet-particle-meter]]     * Forknuté repo ze kterého dělám pull requesty zpět do Ivanova SensoricNet-particle-meter [[https://​github.com/​dron23/​SensoricNet-particle-meter]]
 +  * DavePage: SensoricNet mapy [[https://​github.com/​daveOVApage/​SensoricNet-maps]]
   * Marx GIT:   * Marx GIT:
   * Cyberian GIT: https://​github.com/​0xB800/​SensoricNet-particle-meter (old version)   * Cyberian GIT: https://​github.com/​0xB800/​SensoricNet-particle-meter (old version)
 +
 +===== Power Input and power supply =====
 +  * 6V/250milA
 +  * potrentially usable bathery [4days]: https://​www.dstechnik.cz/​specialni-6v-akumulator-20ah-pro-napriklad-nemocnicni-luzka-el-vozitka/​alarmguard-aku-6v-20ah-6272.html
 +
 +===== Boxing [cad, 3d printing sources] =====
 +  * To be addded by MICHAL
  
 ===== Logic + related links + PR ===== ===== Logic + related links + PR =====
Line 41: Line 51:
  
 ===== Related documents + specification ===== ===== Related documents + specification =====
 +
 +==== SensoricNet backend ====
 +
 +Backend se skládá z několika komponent, které řeší dílčí kroky v toku dat backendem. Celý backend je schematicky znázorněn na obrázku.
 +
 +{{ :​sensenet:​sensoric_net_flow.png?​nolink |}}
 +
 +Primární zdroj dat jsou data ze senzorů odesílaných ze sítě NBIoT, ale backend je psán i s ohledem na kompatibilitu se sítí LoRaWAN a komunitním projektem The Things Network (TTN).
 +
 +==== Příjem dat ze sítě NBIoT ====
 +
 +Senzory jsou připojeny do sítě pomocí modulu Quectel a vybaveny SIM kartou. NBIoT síť Vodafone přijme data ze senzoru a odesílá je ve formě UPD packetu na předdefinovanou IP adresu našeho „network serveru“, který je ale realizovaný relativně jednoduchým daemonem (projekt SensoricNet-udp),​ který naslouchá na portu a přijatá data dekóduje. Pro enkódování používáme Cayenne Low Power Payload (LPP)1 metodu. Data jsou dále odeslána jako http POST požadavek ve formátu JavaScript Object Notation (JSON) našemu „aplikačnímu serveru“ (projekt SensoricNet-api),​ který má implementované REST API, které je schopno takto odeslaná data rozparsovat,​ uložit a odeslat je k dalšímu zpracování.
 +
 +Při návrhu aplikačního serveru námi stanovené priority byly
 +  * ukládání měřených hodnot i všech metadat do relační databáze
 +  * odesílání dat k dalšímu zpracování pomocí protokolu MQTT
 +  * interakce s okolím pomocí REST API
 +  * kompatibilita s metodou „HTTP Integration2“ network serveru TTN
 +  * opensource
 +
 +
 +Pro realizaci jsme zvolili vcelku konzervativní prostředky – network server i aplikační server je napsán v jazyce PHP, použitá relační databáze je MariaDB, distribuce dat k dalšímu zpracování je řešena pomocí Mosquitto-PHP knihovny.
 +MQTT broker je nainstalován na samostatném serveru a v současné době jediné další zpracování dat spočívá v jejich ukládání v InfluxDB3 a vizualizaci pomocí nástroje Grafana. Pro ukládání dat přijatých po MQTT do InfluxDB slouží další jednoduchý daemon, tentokrát napsaný v Pythonu (projekt SensoricNet-mqtt-influxdb). Grafana zatím nemá doménové jméno a je dostupná na adrese [[http://​193.84.207.67:​3000]].
 +
 +Jelikož mají senzory implementovaný GPS přijímač (který se letos povedlo zprovoznit),​ tak vznikla i vizualizace umístění senzorů na mapě (projekt SensoricNet-maps),​ která využívá api aplikačního serveru. Mapa se nachází na adrese [[https://​lightstar.stud.slu.cz/​map/​]].
 +
 +==== Zdrojové kódy ====
 +
 +Všechny softwarové komponenty jsou umístěny veřejně na serveru github. Konkrétně:​
 +    • SensoricNet-udp (překladač UDP packetu z NBIoT na API volání, realizace downstream komunikace) - https://​github.com/​dron23/​SensoricNet-udp
 +    • SensoricNet-api (aplikační server) - https://​github.com/​dron23/​SensoricNet-api
 +    • SensoricNet-mqtt-influxdb (příjem MQTT zpráv a ukládání dat do InfluxDB) - https://​github.com/​dron23/​SensoricNet-mqtt-influxdb
 +    • SensoricNet-maps (vizualizace umístění senzorů na mapě) - https://​github.com/​daveOVApage/​SensoricNet-maps
 +    • SensoricNet-ansible (automatizace nasazení aplikačního a InfluxDB/​Grafana serveru)
 +https://​github.com/​dron23/​SensoricNet-ansible
 +
 +==== SensoricNet API ====
 +
 +učešu později... TODO
 +
 +obecně zevrubná dokumentace není, protože celé to API je zatím jen nástřel nějaké funkcionality a je implementované jen to nejnutnější. Očekával jsem, že se to bude ještě dost měnit. Teď už to tak nevypadé. Pro přehled o voláních a parametrech nejlépe nahlédnout přímo do zdrojáku.
 +
 +[[https://​github.com/​dron23/​SensoricNet-api/​blob/​master/​src/​SensoricNetRestApi.php]]
 +
 +=== Vložení dev-id do DB ===
 +
 +Dela se to vcelku jednoduse pres api call
 +
 +PUT https://​lightstar.stud.slu.cz/​api/​sensoricnet/​sensors/<​dev-id>​
 +
 +(za dev-id je treba dosadit napr. nbiot-0030)
 +
 +samozrejme je k tomu potreba znat api kredence.
 +
 +pouziva se basic auth
 +
 +ja pouzivam RESTED plugin ve firefoxu, ale klidne staci curl
 +
 +<code bash>
 +curl -i --user "​cyberian:​***password***"​ -H "​Content-Type:​
 +application/​json"​ -H "​Accept:​ application/​json"​ -X PUT
 +https://​lightstar.stud.slu.cz/​api/​sensoricnet/​sensors/​nbiot-0022
 +</​code>​
 +
 +<​file>​
 +HTTP/1.1 200 OK
 +Date: Wed, 10 Jul 2019 20:26:38 GMT
 +Server: Apache/​2.4.39 (IUS) OpenSSL/​1.0.2k-fips mod_fcgid/​2.3.9
 +X-Powered-By:​ PHP/7.0.33
 +Pragma: no-cache
 +Cache-Control:​ no-cache, must-revalidate
 +Expires: 0
 +Transfer-Encoding:​ chunked
 +Content-Type:​ application/​json
 +
 +{
 +    "​status":​ "​ok"​
 +}
 +</​file>​
 +
 +no a to je vlastne cele. Vytvarej jen senzory co opravdu potrebujes, at
 +se to zbytecne nezasira... Nove vytvoreni existujiciho senzoru nic
 +nerozbije (ale prepise dashboard v grafane, pokud si v nem delal nejake
 +custom zmeny)
 +
 +api na vypis zavedenych senzoru existuje, ale vypisuje vsechny merene
 +hodnoty, tak takhle si to muzes grepnout zhustene...
 +
 +<code bash>
 +curl -i --user "​cyberian:​***password***"​ -H "​Accept:​ application/​json"​
 +-X GET https://​lightstar.stud.slu.cz/​api/​sensors | grep devId | sort | uniq
 +</​code>​
 +
 +ale existuje vlastne i API call
 +
 +GET https://​lightstar.stud.slu.cz/​api/​sensors/​simple
 +
 +kterej ti vrati primo zavedene senzory, delal sem ho kvuliva zabbix
 +monitorovani a uz sem racil pozapomenout
 +
  
 ===== Money + Project =====  ===== Money + Project ===== 
Line 62: Line 172:
 {{ project:​vodafone_infra.png }} {{ project:​vodafone_infra.png }}
  
-* [[http://​webcache.googleusercontent.com/​search?​q=cache:​Qjx60gNk0wsJ:​www.wellnessair.cz/​mereni-koncentrace-co2-ve-skolni-tride-v-zs-polna+&​cd=1&​hl=en&​ct=clnk&​gl=uk|http://​webcache.googleusercontent.com/​search?​q=cache:​Qjx60gNk0wsJ:​www.wellnessair.cz/​mereni-koncentrace-co2-ve-skolni-tride-v-zs-polna+&​cd=1&​hl=en&​ct=clnk&​gl=uk]]+* [[http://​webcache.googleusercontent.com/​search?​q=cache:​Qjx60gNk0wsJ:​www.wellnessair.cz/​mereni-koncentrace-co2-ve-skolni-tride-v-zs-polna+&​cd=1&​hl=en&​ct=clnk&​gl=uk|http://​webcache.googleusercontent.com/​search?​q=cache:​Qjx60gNk0wsJ:​www.wellnessair.cz/​mereni-koncentrace-co2-ve-skolni-tride-v-zs-polna+&​cd=1&​hl=en&​ct=clnk&​gl=uk 
 + 
 +===== Debug ===== 
 +{{:​j17.png?​200 |}} 
 +{{ :​ftdi_usb_ttl.png?​400 |}}Ke čtení debug informací je vyhrazen seriový port vyvedený na konektoru J17, piny 13(TX) a 14(RX). Pokud nemáte v počítači sériový port, pak je potřeba převodník z USB na sériový port s TTL úrovněmi např. FTDI USB to TTL serial converter module. Jumper máme přehozený na 3,3V. Piny RX, TX se samozřejmě připojují křížem: RX<-TX, TX->RX. K tomu je potřeba připojit ještě GND pin. 
 + 
 +Nastavení portu, jak je vidět z minicomu (použít můžete jakýkoliv telnetový program) je 57600 baudů, 8 bitů bez parity, 1 stop bit. 
 +Název portu zjistíte z výpisu jádra příkazem dmesg. V našem případě je to /​dev/​ttyUSB0. Parametr -s u minicomu spustí nastavení. 
 + 
 + 
 + 
 + 
 +<​code>​ 
 +apt install minicom 
 +dmesg  
 +minicom -s 
 +    +-----------------------------------------------------------------------+ 
 +    | A - Sériové zařízení ​          : /​dev/​ttyUSB0 ​                        | 
 +    | B - Umístění zámku ​            : /​var/​lock ​                           | 
 +    | C - Program pro příchozí volání: ​                                     | 
 +    | D - Program pro odchozí volání :                                      | 
 +    | E - Bps/​Par/​Bity ​              : 57600 8N1                            | 
 +    | F - Hardwarová kontrola toku   : Ne                                   | 
 +    | G - Softwarová kontrola toku   : Ne                                   | 
 +    |                                                                       | 
 +    |    Vyberte písmeno: ​                                                  | 
 +    +-----------------------------------------------------------------------+ 
 +</​code>​ 
 + 
 +<​code>​ 
 +DEBUG: tady 
 +DEBUG: IoT module hw reset 
 +DEBUG: IoT module hw reset done 
 +DEBUG: NBIoT site connect 
 +AT+CFUN=1 
 + 
 +ERROR 
 +AT+CFUN=1
  
 +ERROR
 +AT+CFUN=1
  
 +ERROR
 +AT+CFUN=1
 +                                                                               
 +ERROR                                                                          ​
 +</​code>​
  • sensenet.1563540032.txt.gz
  • Last modified: 2019/07/19 14:40
  • by dron