Étape 3: Téléchargez le programme de travail de python
Le programme python doit importer quelques bibliothèques standard. La plupart est déjà installée à Jessie, sauf pyaudio. L’installer avec
python -u rain.py
Télécharger le programme python (rain.py) et à partir du même répertoire, exécutez-le avec
........ We will open device 1 ave: 254 [ 0 703 479 266 222 185 195 161 177 150] wind level: 0ave: 274 [ 0 927 489 285 201 172 187 158 161 157] wind level: 0
Le u - veille à ce que la sortie du programme s’affiche immédiatement sur l’écran du terminal. Sans elle, la sortie est mise en mémoire tampon et peut prendre un certain temps à apparaître.
Si votre webcam est reconnu correctement, le programme devrait ouvrir le micro et imprimer une charge de trucs et puis quelque chose comme ça, avec une nouvelle ligne de nombres qui apparaissent sur toutes les 6 secondes
No sound input device found. Try again with device_debug = 1 to see what devices PyAudio can find. Bye
D’autre part si vous obtenez ceci
device_debug = 1
vous avez un peu du travail à faire pour obtenir pyaudio de reconnaître votre microphone. À autour de la ligne 29 de rain.py, vérifiez que
python -u rain.py
et exécutez-le à nouveau avec
{'defaultSampleRate': 16000.0, 'defaultLowOutputLatency': -1.0, 'defaultLowInputLatency': 0.0239375, 'maxInputChannels': 1L, 'structVersion': 2L, 'hostApi': 0L, 'index': 2, 'defaultHighOutputLatency': -1.0, 'maxOutputChannels': 0L, 'name': u'USB Device 0x46d:0x0059: Audio (hw:1,0)', 'defaultHighInputLatency': 0.096}
Vers la fin de la charge de trucs, vous devriez voir quelques lignes à la recherche de quelque chose comme
'maxInputChannels': 1L
On doit correspondre à votre webcam. Chercher
if dev['maxInputChannels'] == 1 and dev['defaultSampleRate'] == 16000.0 :
Cela dit que c’est une entrée soit un microphone. Vous devrez ajuster les essais sur la ligne 41 de rain.py pour qu’il puisse se connecter au vôtre. Cela a fonctionné pour un seul microphone USB similaire à la mienne :
device_debug = 0
Bonne chance!
En supposant que vous réussissez, vous pouvez changer autour de la ligne 29 à
ave: 269 [ 0 873 411 304 224 185 195 161 180 158] wind level: 0ave: 280 [ 0 937 475 281 209 185 195 174 176 167] wind level: 0 ave: 284 [ 0 791 649 296 228 171 188 173 182 164] wind level: 0
Maintenant, exécutez-le à nouveau et regardez les chiffres - une nouvelle ligne doit venir toutes les 6 secondes
ave: 307 [ 0 739 584 400 317 229 231 210 189 173] wind level: 54ave: 14138 [ 0 13832 21242 10181 14903 24935 13589 30922 7767 4013] wind level: 2155 ave: 10666 [ 0 14417 18740 16290 8441 9277 9960 17068 7375 5098] wind level: 6093
Chaque ligne montre le résultat de l’analyse un morceau du signal audio provenant du microphone. Les 3 lignes ci-dessus sont typiques de mon micro quand il n’y a pas beaucoup sonore.
La première partie est la puissance moyenne - environ 280. Les unités sont arbitraires -, alors nous aurons de l’étalonner à l’étape suivante.
La deuxième partie - entre crochets sont les niveaux de puissance en 10 bandes de fréquence. La plus faible force est égale à zéro.
La troisième partie est une estimation du niveau de vent. Ceci est utilisé pour réduire le risque de bruit de vent d’être inscrite sous forme de pluie.
Maintenant, faire du bruit. Parler, mettre sur de la musique, appuyez sur la webcam ou attendre peu bruyant de la pluie (si la webcam est déjà dans votre jardin d’hiver). Vous devriez voir quelque chose comme
21/10/2015 17:05:02,0,3171,1787,1636,959,362,244,424,256,204,204,0.0,1228
Nous pouvons donc voir les bruits plus forts qu’un nombre plus élevé correspondant à des niveaux plus élevés de puissance. Si le vôtre ne change pas, revenir en arrière et vérifiez que votre microphone fonctionne vraiment.
Laisser tourner pendant au moins 5 minutes, puis vous pouvez voir qu’il ajoute ses résultats à la /run/shm/rain1.csv fichier dans un format similaire
ave: 269 [ 0 873 411 304 224 185 195 161 180 158] wind level: 0ave: 280 [ 0 937 475 281 209 185 195 174 176 167] wind level: 0 ave: 284 [ 0 791 649 296 228 171 188 173 182 164] wind level: 0
Il s’agit d’un fichier csv (valeurs séparées par virgule) prêt à être lu par votre tableur préféré ou sur le web le langage de script.
La première valeur est la date et l’heure.
Les 10 prochains sont les niveaux de puissance dans les bandes de fréquences de 10 en moyenne sur les 5 minutes.
L’autre est les précipitations estimées jusqu'à présent ce jour-là.
Le dernier est le niveau de la moyenne du vent sur les 5 dernières minutes.
J’ai trouvé que la valeur moyenne de la bande de fréquence plus élevée a été la meilleure corrélation aux chutes de pluie. La valeur 4e était semblable à la plus élevée pour la pluie, mais a été très sensible au vent, est utilisé pour éviter le vent de comptage sous forme de pluie.
Toutes les 24 heures, à minuit, il enregistre des précipitations de la journée en /home/pi/rain_daily.csv et réinitialise la pluviométrie enregistrée dans /run/shm/rain1.csv
Si vous le souhaitez, vous pouvez consulter les commentaires en rain.py pour voir comment cela fonctionne. Vous aurez probablement de le faire si vous avez besoin de changer quoi que ce soit ou étalonner votre microphone.