I’ve created a Zabbix template for Datek UPS but I think is compatible with most stardard UPS.
There are some trigger to check battery status and temperature.
Download:
zbx_Datek_Ups_templates.zip
I’ve created a Zabbix template for Datek UPS but I think is compatible with most stardard UPS.
There are some trigger to check battery status and temperature.
Download:
zbx_Datek_Ups_templates.zip
I’ve created a Zabbix Template for Ruckus Unleashed access point, monitor if all your access point in the network are online.
You must “enable snmp” on master.
You must create a host with the ip of the master and add the macros {$SNMP_COMMUNITY} with the name of your community (example: public).
Modify in Template the trigger “Rukus Access Point Offline” with the number of your access point.
Add in your zabbix server the mib of Ruckus in your snmp
Download:
Ruckus Mib Files.zip
zabbix Templates Ruckus Unleashed.zip
Il file .DEB è un archivio che contiene 3 files:
Di solito quello che serve è il data.tar.gz che contiene il programma.
Per prima cosa dobbiamo estrarre i 3 pacchetti sopraindicati dal file .DEB:
ar vx mypackage.deb
Poi estrarre il contenuto di data.tar.gz utilizzando tar:
tar -xzvf data.tar.gz
Per più informazioni sui comandi tar e ar consultate le pagine man : tar(1)
 e ar(1)
.
Era 08/02/2013 io e Gabriele Merli abbiamo suonato in duo al Gran Buffet di Reggio Emilia per la prima volta insieme in questa formazione, qualcosa di bello c’e’:
1. Intro
2. Softly
3. Mo’ Better Blues
4. Armando’s Rumba
5. A Child is Born
6. Devi May Care
7. In a Sentimental Mood
8. Sack of Blues
9. Lover Man
10. A Night in Tunisia
Con questo articolo parto a spiegarvi come utilizzare arduino e altri strumenti per autocostruirsi un impianto di domotica e relativo antifurto.
Con questo parte di progetto utilizzo arduino per inviare via UDP lo stato degli I/O e anche di ricevere pacchetti UDP per controllare 4 relay.
Tutto il progetto completo è formato da diversi blocchi come questo che comunicano con un server (raspberry pi) che in python controlla il tutto e agisce di conseguenza. Sul Rasberry è installato anche Asterisk che interfacciato con il mio programma python è in grado di ricevere telefonate per attivare l’antifurto o disattivarlo e decidere chi chiamare, tutto tramite voce i segnali DTMF.
Comunque senza perderci troppo con il primo pezzo, cioe’ arduino che invia e riceve pacchetti.
I messaggi che manda sono nel formato “NUMERO SCHEDA” + “NUMERO SENSORE” + “STATO”
ad esempio la scheda 5 arduino con il sensore 6 e lo stato 00001 = 050600001
In questo modo posso utilizzare quanti arduino voglio, di sensori in teoria fino a 99, teniamo conto che arduino si può facilmente espandere con I/O su i2c.
Per il valore utilizzo 5 cifre perchè oltre al segnale on/off posso trasmettere temperature, livello di Co2 e tutto quello può servirvi.
Come porte UDP ho utilizzato 5055 per la trasmissione e 5056 per la ricezione, poi potete comunque modificarle con altre se vi torna comodo.
Nel mio caso ho utilizzato:
serve la libreria per gestire lo shield Ethernet, quindi scaricate la libreria qui:Â https://github.com/ntruchsess/arduino_uip
Installate la libreria in Arduino IDE e qui sotto c’e’ il programma ad hoc che utilizzo su una scheda, più’ sotto vi spiego i vari blocchi:
/* * pin 10 -11 -12 -13 occupati da ethernet * pin 2 -3 -4 -5 -6 -7 -8 -9 digitali * da A0 ad A7 analogici */ #include <UIPEthernet.h> EthernetUDP udpserver; EthernetUDP udp; int success; char IRF; int counter; //lo utilizzo per il conteggio del client per mandare i messaggi al server void setup() { pinMode(2, OUTPUT); //rele pinMode(3, OUTPUT); //rele pinMode(4, OUTPUT); //rele pinMode(5, OUTPUT); //rele pinMode(6, INPUT); // finestra cortile filo rosso pinMode(7, INPUT); // finestra vicino lavandino filo nero pinMode(8, INPUT); // porta cucina filo bianco pinMode(9, INPUT); // sensore lampada 500w portico Serial.begin(9600); //imposto la porta seriale per debug uint8_t mac[6] = {0x00,0x01,0x02,0x03,0x04,0x05}; //imposto mac address Ethernet.begin(mac,IPAddress(10,0,0,253)); //imposto ip success = udpserver.begin(5056); // apro la porta udp } void loop() { //controllo nuovi udp-packet: int size = udpserver.parsePacket(); if (size > 0) { do { char* msg = (char*)malloc(size+1); int len = udpserver.read(msg,size+1); msg[len]=0; Serial.print("received: "); Serial.println(msg); if (String(msg[0])=="1") { digitalWrite(2, HIGH); } else { digitalWrite(2, LOW); } if (String(msg[1])=="1") { digitalWrite(3, HIGH); } else { digitalWrite(3, LOW); } if (String(msg[2])=="1") { digitalWrite(4, HIGH); } else { digitalWrite(4, LOW); } if (String(msg[3])=="1") { digitalWrite(5, HIGH); } else { digitalWrite(5, LOW); } free(msg); } while ((size = udpserver.available())>0); //finish reading this packet: udpserver.flush(); // restituisco la lettura delle uscite for (int i=20; i < 24; i++){ success = udpserver.beginPacket(IPAddress(10,0,0,10),5056); String Messaggio = "050" + String(i) + "0000" + String(digitalRead(i-18)); success = udpserver.print(Messaggio); success = udpserver.endPacket(); delay(100); } udpserver.stop(); //restart with new connection to receive packets from other clients Serial.print("restart connection: "); Serial.println (udpserver.begin(5056) ? "success" : "failed"); } // qui parto con le letture dei sensori if (counter > 1200) { for (int i=6; i < 10; i++){ success = udp.beginPacket(IPAddress(10,0,0,1),5055); String Messaggio = "050" + String(i-5) + "0000" + String(!digitalRead(i)); success = udp.print(Messaggio); success = udp.endPacket(); delay(100); } for (int i=0; i < 2; i++){ if (analogRead(i) > 300) { //leggo lo stato degli irf IRF='1'; } else { IRF='0'; } success = udp.beginPacket(IPAddress(10,0,0,1),5055); String Messaggio = "050" + String(i+5) + "0000" + IRF; success = udp.print(Messaggio); success = udp.endPacket(); delay(100); } counter=0; } else { counter = counter + 1; } }
Lo shield per la scheda di rete utilizza i pin di Arduino 10 -11 -12 -13
Quindi questi non li possiamo utilizzare per la nostra domotica.
uint8_t mac[6] = {0x00,0x01,0x02,0x03,0x04,0x05}; //imposto mac address Ethernet.begin(mac,IPAddress(10,0,0,253)); //imposto ip success = udpserver.begin(5056); // apro la porta udp
Dobbiamo impostare il mac address per la scheda di rete (utilizzare dei numeri esadecimali a caso), poi impostiamo un IP statico nel range della vostra rete; nella mia rete utilizzo 10.0.0.0/24 quindi ho preso un IP libero a caso  10.0.0.253.. Alla fine imposto la porta di ascolto 5056 per ricevere dati da server (utilizzare certe porte come uscite).
Nel ciclo di loop è tutto abbastanza semplice, leggo i valori degli input e li invio uno a uno via UDP al mio server.
Per la parte della gestione uscite in Arduino rimane in ascolto sulla porta 5056 e riceve una stringa di 4 caratteri che attivano o disattivano i relay (1 attiva 0 disattiva).
Quindi 0001 attiva il primo relay.
Questa è la prima parte del progetto, spero vi possa essere di spunto per i vostri progetti.
Nel prossimo articolo posterò un progetto quasi uguale per Arduino dove invece lo utilizzo solo per leggere ingressi e non ho uscite, quindi manca la parte server.
Eccomi alla mia postazione di lavoro durante il servizio fotografico
[nggallery id=59]
Dopo averla messa in rete tramite il wifi l’ho configurata in modo da avere l’orario sincronizzato con ntp visto, che tutte le volte che si spegne o si riavvia perde l’orario e la data non avendo un orologio interno.
Per fare questo ho utilizzato ntpclient e per installarlo eseguire il seguente comando:
ipkg install ntpclient
poi ho creato il file /etc/init.d/ntpclient con il seguente contenuto:
#!/bin/sh
/usr/sbin/ntpclient -c 1 -s -h pool.ntp.org &
per farlo andare in avvio automatico al boot ho fatto il seguente link in modo che l’ora parta prima dei vari servizi come il cron:
ln -s /etc/init.d/ntpclient /etc/rc.d/S49ntpclient
inoltre per tenerlo sincronizzato ho inserito nel cron un comando in modo che venga sincronizzata l’orario una volta al giorno che dovrebbe essere più che sufficiente; creare il file in /etc/crontabs/root e inserire il seguente codice:
# to timesync every day 5 del mattino
0 5 * * * /etc/init.d/S55ntpclient
L’ultimo tocco è quello di dargli in timezone corretto altrimenti sarà sempre 2 ore o 1 ora indietro a seconda del timesaving; per la corretta configurazione del timezone italiano creare il file TZ in /etc con il seguente contenuto:
CET-1CEST,M3.5.0,M10.5.0/3
fare un bel riavvio della fonera e trovete data ora aggiornata.
Dopo tanto tempo sono tornato sulla Fonera 2100 per modificarla e fargli pilotare l’apricancello collegandola all’antifurto.
Per il momento sono partito con Openwrt, una distro linux pulita che mi consenta di configurare la fonera utilizzando le porte gpio.
In questo articolo parte prima configuro la rete.
Mi sono collegato in seriale con la console utilizzando putty e per il wifi l’ho configurato utilizzando il wpa_supplicant per avere il supporto wpa della mia rete wifi domestica.
La confgurazione da mettere in /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=1000
update_config=1
network={
ssid="hidaba_house"
psk="PASSWORD DELLA RETE"
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
}
Poi ho creato lo script per l’avvio automatico al boot in /etc/init.d/wpa_supplicant
#!/bin/sh /etc/rc.common
START=01
start () {
wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ath0 -D wext
}
poi l’ho linkato in /etc/rc.d/S45wpa utilizzando 45 in modo che si avvii dopo che la rete è partita
ln -s /etc/init.d/wpa_supplicant /etc/rc.d/S45wpa
infine configurare la rete con l’indirizzo voluto in /etc/config/network
config interface wifi0
option ifname  ath0
option proto   static
option ipaddr  10.0.0.90
option gateway 10.0.0.5
option dns     10.0.0.5
option netmask 255.255.255.0
fare un bel riavvio e avremo la fonera funzionante in wifi come client.
Finalmente siamo arrivati le feste che concludono l’anno. Si tirano le somme , si guarda indietro , si guarda avanti , si fanno progetti. È stato un anno di fuoco, atipico, brutto, pieno di brutte sorprese e incidenti di percorso ma soprattutto all’insegna della delusione; tante persone più o meno vicine mi hanno fortemente deluso e tradito. Non resta che sperare in un 2010 migliore. Tante belle cose a tutti!