====== SmartCitizen kit - software ====== Approche logicielle pour, par exemple, extraire des données directement depuis le kit, suivre son fonctionnement, ... ===== Quelques opérations d'installation et de (re)configurations ===== * [[http://docs.smartcitizen.me/Smart%20Citizen%20Kit/#operation-modes|Operation modes]] Savoir ce que raconte la LED qui clignote * [[http://docs.smartcitizen.me/Troubleshooting/#factory-reset-your-kit|Factory reset your kit]] * [[https://developer.smartcitizen.me/|Utiliser l'API web du projet]] * [[https://docs.smartcitizen.me/Guides/getting%20started/Getting%20firmware%20information/|Getting firmware information]] {{ ::smartcitizen_48439505516_d210ce2c8a_h.jpg |}} ===== Envoyer les données du SmartCitizen Kit sur un broker mqtt local ===== Mqtt (Message Queuing Telemetry Transport2) est un protocole de messagerie basé sur le protocole TCP/IP, Il est conçu pour les connexions avec des sites distants où la bande passante du réseau est limitée. C'est un protocole couramment utilisé pour "l'internet des objets", il y a des clients, serveurs (on dit broker) et des librairies pour toutes les plateformes. Par défaut l'adresse du serveur mqtt qui reçoit les données est celui associé au projet de kit, soit mqtt.smartcitizen.me, elle est inscrite dans le firmware, il est possible de la changer pour l'adresse de serveur mqtt que l'on aurait installé en local par exemple ou de faire une feinte dns * Voir [[https://forum.smartcitizen.me/t/update-firmware-to-use-mqtt-broker/1211/2|les possibilités évoquées sur le forum]] et le fait d'éditer le Firmware pour changer le serveur mqtt * [[https://github.com/fablabbcn/smartcitizen-kit-21|Le github du sdk smartcitizen 2.1]] Il est aussi possible de récupérer les données en temps réel via la communication série, en bash ou en python pour ensuite envoyer des messages que broker avec un client linux ou python, voir les [[https://docs.smartcitizen.me/Guides/Using%20the%20Shell/#advanced-but-cool-example|exemples avancés]] ===== Communication série - usb ===== Avec une raspberry Pi avec RaspiOS 10, le kit Smartcitizen branché en usb sur la Pi : Installer screen sudo apt install screen Identifier le port série ls /dev/tty.* Avec python sudo apt install python-pip python -m pip install pyserial python -m serial.tools.miniterm --- Available ports: --- 1: /dev/ttyACM0 'ttyACM0' --- 2: /dev/ttyAMA0 'ttyAMA0' --- Enter port index or full name: /dev/ttyACM0 --- Miniterm on /dev/ttyACM0 9600,8,N,1 --- --- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --- 20.0;61.0 20.0;61.0 20.0;61.0 --- exit --- dans ce cas, le port est adéquat est /dev/ttyAMA0 Pour se connecter avec screen screen /dev/ttyAMA0 On arrive sur le prompt du kit, taper help : SCK > help SCK > reset: Resets the SCK version: Shows versions and Hardware ID rcause: Show last reset cause (debug) outlevel: Shows/sets outlevel [0:silent, 1:normal, 2:verbose] help: Duhhhh!! pinmux: Shows SAMD pin mapping status sensor: Shows/sets enabled/disabled sensor [-enable or -disable sensor-name] or [-interval sensor-name interval(seconds)] read: Reads sensor [sensorName] control: Control sensor [sensorName] [command] monitor: Continously read sensor [-sd] [-notime] [-noms] [sensorName[,sensorNameN]] saved: Shows locally stored sensor readings [-details] [-publish] free: Shows the amount of free RAM memory i2c: Search the I2C bus for devices charger: Controls or shows charger configuration [-otg on/off] [-charge on/off] config: Shows/sets configuration [-defaults] [-mode sdcard/network] [-pubint seconds] [-readint seconds] [-wifi "ssid" ["pass"]] [-token token] esp: Controls or shows info from ESP [-on -off -sleep -wake -reboot -flash] netinfo: Shows network information time: Shows/sets time [epoch time] [-sync] state: Shows state flags hello: Sends MQTT hello to platform debug: Toggle debug messages [-sdcard] [-espcom] [-list] shell: Shows or sets shell mode [-on] [-off] mqtt: Publish custom mqtt message ('topic' 'message') SCK > Pour voir la config SCK > config Mode: network Publish interval: 60 Reading interval: 60 Wifi credentials: monwifi - Token: abcdef Mac address: 4A:3F:DA:08:DE:50 Pour voir les infos réseau, taper SCK > netinfo Changer le hotspot wifi sur lequel le kit est connecté SCK > config -wifi "NEWSSID" "NEWPASSWORD" [[https://docs.smartcitizen.me/Guides/getting%20started/Using%20the%20Shell/#some-examples|D'autres exemples]] sur la page de la documentation Se détacher de la session screen pour sortir du prompt SCK > ctrl + a puis \ Really quit and kill all your windows [y/n]y ====== Update le firmware ====== Je vois sur le git que le [commit](https://github.com/fablabbcn/smartcitizen-kit-21/commit/6175bbd36a58396ddd0e23f6d506b8e68ee52d1d#diff-a4aa37ea2506e59b71a026f1398add2782975f525043325e664462eb559e7ae3) : permet de configurer les broker MQTT via la console. Je me met donc sur la voie du firmware flashing de mon smartcitizen kit. ``` bash git clone https://github.com/fablabbcn/smartcitizen-kit-21.git git submodule init git submodule update pip3 install pyserial platformio python3 make.py build sam esp ``` Double clic sur le bouton reset, la LED passe au vert. ``` bash python3 make.py flash sam ``` En "red led" mode, lors du flash la led passe en blanc. Pour le flash de l'ESP, il peut etre possible que cela fail. Il faut insister. ``` bash python3 make.py flash esp ``` Configuration du kit via la console : ``` bash config -mode network -token fooMbd -wifi "SSID" "PASSWORD" mqttsrv -host mqtt.mby.fr -port 1883 hello ``` Vérification que le kit publie bien sur notre serveur MQTT : ``` bash mosquitto_sub -h mqtt.mby.fr -v -t "device/sck/foombd/#" ``` {{ ::screenshot_from_2021-04-04_22-23-15.png?nolink&1024 |}} BINGO, les données arrivent sur le serveur MQTT. Il ne reste plus qu'a ecrire un petit démon pour convertir le format smartcitizen raw au format LPP. Exemple : 2021-04-04T20:26:14Z Temperature: 20.78 C Humidity: 47.08 % Battery: 99 % Light: 96 Lux Noise dBA: 33.85 dBA Barometric pressure: 100.85 kPa VOC Gas CCS811: 112.00 ppb eCO2 Gas CCS811: 1137.00 ppm => device/sck/foombd/readings/raw {t:2021-04-04T20:25:14Z,10:99,14:97,55:20.77,56:47.03,53:51.17,58:100.86,113:101.00,112:1068.00,89:6,87:6,88:6} => device/sck/foombd/readings/raw {t:2021-04-04T20:26:14Z,10:99,14:96,55:20.80,56:47.14,53:33.85,58:100.85,113:112.00,112:1137.00} Attention, il manque certaines valeurs de certains capteurs de temps en temps, car la fréquence de capture et d'envoi des données n'est pas la même. ====== Documentation - références ====== * [[http://docs.smartcitizen.me/|Base de la documentation]] * [[https://docs.smartcitizen.me/Guides/getting%20started/Using%20the%20Shell/|Communiquer avec le shell]] en usb avec le kit {{tag>bj max smartcitizen arduino capteurs}}