Visualizzazione post con etichetta linux. Mostra tutti i post
Visualizzazione post con etichetta linux. Mostra tutti i post

giovedì 31 dicembre 2020

MQTT publisher sistema di test del protocollo MQTT

 Chi non volesse costruire il device come trattato negli articoli precedenti, ma avesse comunque necessita' di veder funzionare il sistema basato sui pacchetti di messaggi MQTT, puo' sempre far girare un software sul pc che simula il device stesso e che fornisce messaggi sul broket MQTT necessari.

Per questi test ho scelto il broker messo a disposizione dal progetto Eclipse che potete trovare qui 

Per far questo, sempre attraverso il progetto Eclipse ho trovato un codice che con poche righe consente di inviare messaggi ad un qualsiasi broker MQTT ad intervalli regolari

Utilizzando sempre il sitema Linux su WSL in Windows, nella mia shell, sempre nella cartella mqtt_client, ho creato un nuovo file chiamato publisher.py che crea una connessione con il broker MQTT, ed invia una serie di messaggi sul topic scelto ( nel mio caso TecnoGeppetto/topic

publisher.py

import paho.mqtt.client as mqtt
import time

def on_connect(client, userdata, flags, rc):
    print(f"Connected with result code {rc}")
    
client = mqtt.Client()
client.on_connect = on_connect
client.connect("broker.emqx.io", 1883, 60)

# send a message to the TecnoGeppetto/topic every 10 second, 50 times in a row
for i in range(50):
    # the four parameters are topic, sending content, QoS and whether retaining the message respectively
    client.publish('TecnoGeppetto/topic', payload=i, qos=0, retain=False)
    print(f"send {i} to TecnoGeppetto/topic")
    time.sleep(1)

client.loop_forever()

Quindi, su un sistema sul quale gira python 3 e sul quale e' installata la libreria paho.mqtt.client bastera' chiamare python3 publisher.py per ottenere una serie di 50 messaggi ogni 10 secondi pubblicati sul broker pubblico scelto sul topic preferito (nel caso del codice in oggetto, sul topic  TecnoGeppetto/topic

Naturalmente i messaggi potranno essere ricevuto su un'altra shell sulla quale gira il software subcriber, descritto nel post precedente.


Buon divertimento 

TecnoGeppetto




venerdì 7 febbraio 2014

Come Flashare la rom della Beaglebone Black

Allora, per cominciare spieghiamo a cosa serve una operazione del genere.
Flashare la rom della BeagleBone Black puo' essere utile per installare in un colpo solo tutta l'immagine di un disco.
Io sto utilizzando questo metodo per aggiornare il mio sistema con quello utilizzato dal mio collega di esperimenti, Simone, in una botta sola. Cioe', partiamo con un sistema uguale, facciamo degli esperimenti ognuno per par suo sulla propria  BBB, poi quando riusciamo ad arrivare ad un risultato apprezzabile in una delle due (solitamente  la sua!!!), allora ci passiamo l'immagine totale del disco, e l'altro (solitamente io!) ricopia l'immagine pari pari, per ricominciare dallo stesso punto ed andare avanti nella sperimentazione.

Naturalmente ci vuole lo spazio disponibile sul disco sia su un sistema che  sull'altro, e per essere sicuri si puo' anche utilizzare delle chiavette esterne o la microSD gia' prevista dalla BBB.

Fatta l'immagine con il comando

sudo dd if=/dev/sda(disco da copiare) of=/dev/sdc(disco destinazione) bs=1M

e compattata con gunzip

Il cedente appoggia il file su un server ftp, in modo che possa essere prelevato direttamente dalla BBB ricevente in una fase successiva.

Si fa partire la BBB con una versione di ubuntu che gira su microSD, in modo da avere libero accesso al disco interno del sistema con un sistema operativo che gira al di fuori. Per le istruzioni su come fare una microSD che faccia boot con ubuntu segui questa guida

Fatto il boot su ubuntu, si crea il collegamento con il server ftp dove in precedenza e' stato fatto l'upload il file dell'immagine, si prende e si porta in locale facendo attenzione ad avere lo spazio disponibile sulla microSD (dai nostri esperimenti e' sufficiente una microSD da 2 GB per contenere sia il sistema operativo che l'immagine del nuovo, comunque piu' spazio c'e' meglio e', quindi anche una 4GB non guasterebbe!)
Quindi:
get nome-file-immagine

a questo punto usciamo da ftp con quit
e digitiamo questo comando per copiare pari pari il disco sul disco interno della BBB:

gunzip -c nomefile-immagine.img.gz | dd of=/dev/mmcblk1 bs=1M

Al ritorno del prompt la BBB e' flashata con la nuova immagine. Basta eseguire lo shutdown, estrarre la microSD ed il reboot per ottenere un BBB clone dell'altra.
Naturalmente se tutti i passaggi sono stati eseguiti senza problemi.
Buon divertimento
TecnoGeppetto

venerdì 13 settembre 2013

Gestire le Cartelle di Raspberry direttamente nel Mac


 

Ho scoperto un'altra cosa sul sistema Raspberry Pi, semplicemente caricando il programma netatalk e rebootando il sistema, si ottiene direttamente nel doc di Mac la nostra Raspberry che viene vista come cartella del sistema.
Basta connettersi come utente della Raspberry con utente e password e si vedranno immediatamente tutti i file e le cartelle contenute nella home dell'utente Raspberry.
Naturalmente la Raspberry ed il Mac devono essere nella stessa rete e con sotto la stessa classe di numerazione IP.
Il comando per ottenere il programma dal repository e' il seguente

sudo apt-get install netatalk


Fine
buon divertimento
TecnoGeppetto

Attivare WiFi su Raspberry Pi

La scheda Raspberry Pi fa ormai parte da giorni della mia scrivania e dei miei progetti. Come per Arduino, dopo qualche giorno di tempo trascorso su altri progetti, mi sono accorto che non mi ricordo piu' come ho raggiunto alcuni risultati (sara' colpa dell'età??), per evitare di ricominciare sempre tutto da capo, mi sono deciso anche in questo caso, a raccontare gli sviluppi ed i progressi con Raspberry Pi qui sul blog, in maniera tale da essere utile anche a qualcuno di voi lettori che seguite le mie indicazioni.


Quindi, uno dei primi scogli che ho dovuto scavalcare e' stata la corretta gestione della chiavetta WiFi compatibile.
 Qui di seguito i passi che ho compiuto per farla riconoscere al sistema e far comunicare la Raspberry Pi con l' AP della mia stazione.
Intanto la chiavetta che ho scelto e' questa   per il costo esiguo, solo 8 euro e per la sua totale compatibilita' con Raspberry Pi.
Naturalmente il collegamento alla Raspberry mod. B e' piu' semplice, in quanto il modello B e' dotato di 2 porte USB, quindi in una si puo' installare la chiavetta e nell'altro la tastiera per effettuare le modifiche, nel caso della Rasp mod. A invece, si deve scegliere due strade, o utilizzare un HUB USB autoalimentato ( perche la Rasp non ce la fa a fornire corrente sia per l'alimentazione dell'HUB che per la chiavetta ) e quindi poter cosi' utilizzare la tastiera direttamente collegata via USB, oppure collegare la Rasp mod A via serale al Mac e comunicare tramite seriale con la Shell per le relative modifiche e settaggi. In questo caso ho utilizzato questa seconda scelta ( mi piace complicarmi la vita!!)
Si parte quindi con il  collegamento della Raspberry Pi mod A attraverso i PIN della GPIO ad un adattatore seriale USB che sara' collegato al Mac. Io ho utilizzato questo, ma va bene anche questo , collegato alla USB ed ai PIN  TX, RX, GND della GPIO. Per comunicare da Mac si deve aprire la finestra di Terminale e col comando " ls /dev " si deve controllare il nome con cui viene  "vista" la scheda USB-seriale , nel mio caso tty.usbmodem431 .
A questo punto ci si collega col programma " screen " al device e con la velocita' di default della Raspberry PI che e' 115200 baud.
screen /dev/tty.usbmodem431 115200
A questo punto si collega l'alimentazione alla Raspberry e, se tutto e' andato a buon fine, nella finestra di terminale dovrebbero scorrere le scritte del boot di sistema.
Fare quindi il login con utente e password, che di default con il sistema operativo raspbian sono "pi" e "raspberry" .
i successivi comandi dipendono anche dalla configurazione del AP casalingo, nel mio caso ho soltanto il controllo del Mac address, ho scelto di eliminare le chiavi WPA e di utilizzare solamente il controllo del mac address, quindi non ho necessita' di configurare il wpa_supplicant, comunque ho aggiunto due righe alla sua configurazione ugualmente.
questi i comandi in sequenza
sudo apt-get update
sudo apt-get upgrade
 
sudo vi /etc/network/interfaces
 
Questa e' la configurazione standard:
auto lo
 
iface lo inet loopback
iface eth0 inet dhcp
 
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
 
Ho modificato  questo punto 
iface wlan0 inet manual
per far si che Raspberry si aspetti la registrazione in rete attraverso un server dhcp che le fornira'  la corretta numerazione con questo
iface wlan0 inet dhcp
cosi' ho ottenuto il mio settaggio definitivo:
auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
wireless-essid OpenWrtCova
wireless-mode managed
iface default inet dhcp

 Ma si puo' anche scegliere di dare una numerazione fissa alla Rasp modificando il file con  questi comandi:
 
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet manual
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.1
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
 
A questo punto ho modificato la configurazione di wpa_supplicant cosi':
 
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
 
Aggiungedo a quanto gia' scritto nel file questa parte:
network={
ssid="SSID-GOES-HERE"
}
Nel caso che avessi la protezione con chiave WPA  avrei dovuto modificare cosi':
 
network={
ssid="SSID-GOES-HERE"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk="WIFI-PASSWORD-GOES-HERE"
}
 A questo punto per vedere se la chiavetta WiFi viene correttamente vista dal sistema due semplici controlli:
 
iwlist scan
Operazione che rende la lista degli AP "sentiti" dalla chiavetta, tra i quali ci dovrebbe essere anche quello di casa.
 
poi
 
ifconfig wlan0 up
Per "dire" al sistema di accendere il WiFi
 
e quindi:
iwconfig wlan0 essid nome_rete key off
Per accedere alla connessione con l'AP ( modificare il nome_rete con il vero nome dell'AP di casa), e ricordo che key off va bene nel mio caso perche' non ho controlli WPA, altrimenti il comando sarebbe stato key open
 
A questo punto la chiavetta si dovrebbe essere gia' illuminata e dovrebbe gia' aver cominciato il colloquio con l'AP
per ricevere la corretta numerazione da parte del server dhcp, l'ultimo comando
dhclient wlan0
Adesso , se tutto e' andato bene,si dovrebbe essere collegati tramite la chiavetta all'AP di casa, e quindi dovrebbe essere possibile creare una connessione ssh anche da un altro computer della nostra rete domestica.
 
In bocca al lupo e Stay Tuned
Tecnogeppetto