Guest User

Oliver Deisenroth

a guest
Mar 27th, 2009
332
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 11.08 KB | None | 0 0
  1. #! /bin/bash
  2.  
  3. # open2300 weather_log.log logfile to wetterpool converter
  4. # author Oliver Deisenroth
  5. # v0.96
  6.  
  7. ## WENN MAN WeatherOffice NICHT verwenden sollte, bitte die entsprechenden Stellen wie unten im WETTERPOOL Bereich angegeben ABAENDERN!
  8.  
  9. ## BITTE DIE RICHTIGEN PFADE ANGEBEN
  10.  
  11. # Aktuelles Arbeitsverzeichnis
  12. CWD=/var/www
  13.  
  14. # Weatheroffice vorhanden - yes - no
  15. WEATHEROFFICE=yes
  16.  
  17. # Wetterpool Rohdaten
  18. WETTERPOOL=wp_werte.txt
  19.  
  20. # Homepagewetter Rohdaten
  21. HOMEPAGE=wetterdaten.txt
  22.  
  23. # log2300 Logfile
  24. LOGFILE=${CWD}/weather_log.log
  25.  
  26. ## BITTE STATIONSHOEHE EINTRAGEN in Metern
  27. STATIONSHOEHE=217
  28.  
  29. ## BITTE DIE PFADE UEBERPRUEFEN
  30. # Rechte - chmod 775 auf den Ordner plugins und php-Scripte setzen
  31. FHPACHANGE60=${CWD}/weatheroffice/plugins/hpa_aenderung60.txt
  32. FHPACHANGE180=${CWD}/weatheroffice/plugins/hpa_aenderung180.txt
  33.  
  34. FHPAMIN=${CWD}/weatheroffice/plugins/hpa_min.txt
  35. FHPAMAX=${CWD}/weatheroffice/plugins/hpa_max.txt
  36.  
  37. FTEMPCHANGE60=${CWD}/weatheroffice/plugins/temp_aenderung60.txt
  38. FTEMPCHANGE30=${CWD}/weatheroffice/plugins/temp_aenderung30.txt
  39.  
  40. FTEMPMIN=${CWD}/weatheroffice/plugins/temp_min.txt
  41. FTEMPMAX=${CWD}/weatheroffice/plugins/temp_max.txt
  42.  
  43. FMAXWIND=${CWD}/weatheroffice/plugins/wind_maxheute.txt
  44.  
  45. FRAINTODAY=${CWD}/weatheroffice/plugins/regenmenge_heute.txt
  46. FTENDENCY=${CWD}/weatheroffice/plugins/tendenz.txt
  47.  
  48. FSUNRISE=${CWD}/weatheroffice/plugins/sonnenaufgang.txt
  49. FSUNDOWN=${CWD}/weatheroffice/plugins/sonnenuntergang.txt
  50.  
  51. FSNOW=${CWD}/weatheroffice/plugins/schneefallgrenze.txt
  52.  
  53. # clean
  54. rm ${CWD}/${WETTERPOOL}
  55. touch ${CWD}/${WETTERPOOL}
  56.  
  57. ## TE - hier Kuerzel fuer temporaer
  58.  
  59. # Datum auslesen
  60. TEDATE=$(awk '{print $2}' ${LOGFILE} |tail -n1)
  61.  
  62. # Uhrzeit direkt ohne Minuten auslesen
  63. TETIME=$(awk '{print $3}' ${LOGFILE} |tail -n1)
  64.  
  65. # Aussentemperatur auslesen
  66. TEOUTTEMP=$(awk '{print $5}' ${LOGFILE} |tail -n1)
  67.  
  68. # Aussenfeuchte auslesen
  69. TEOUTHUMIDITY=$(awk '{print $8}' ${LOGFILE} |tail -n1)
  70.  
  71. # Windgeschwindigkeit auslesen
  72. TEWINDSPEED=$(awk '{print $9}' ${LOGFILE} |tail -n1)
  73. WFACTOR=3.6 # m/s -> km/h wandeln - fuer spaeter
  74. TEMP=$(echo "scale=5 ; $TEWINDSPEED*$WFACTOR" | bc)
  75. TEWINDSPEED=$TEMP
  76.  
  77. # Windrichtung auslesen
  78. TEWINDDIR=$(awk '{print $10}' ${LOGFILE} |tail -n1|cut -b 1-3)
  79. TEWINDDIRHP=$(awk '{print $11}' ${LOGFILE} |tail -n1)
  80.  
  81. # Regen in einer Stunde auslesen
  82. TERAIN1H=$(awk '{print $13}' ${LOGFILE} |tail -n1)
  83.  
  84. # Regen in 24 Stunden auslesen
  85. TERAIN24H=$(awk '{print $14}' ${LOGFILE} |tail -n1)
  86.  
  87. # Luftdruck auslesen
  88. TEPRESSURE=$(awk '{print $16}' ${LOGFILE} |tail -n1)
  89. TEPRESSUREHP=$(awk '{print $16}' ${LOGFILE} |tail -n1|cut -b 1-4)
  90. TEDIFFHPA60=$(awk '{print $1}' ${FHPACHANGE60} |tail -n1)
  91. TEDIFFHPA180=$(awk '{print $1}' ${FHPACHANGE180} |tail -n1)
  92. TEHPAMIN=$(awk '{print $1}' ${FHPAMIN} |tail -n1)
  93. TEHPAMAX=$(awk '{print $1}' ${FHPAMAX} |tail -n1)
  94.  
  95. # Temperaturen auslesen
  96. TEDIFFTEMP60=$(awk '{print $1}' ${FTEMPCHANGE60} |tail -n1)
  97. TEDIFFTEMP30=$(awk '{print $1}' ${FTEMPCHANGE30} |tail -n1)
  98. TEMAXTEMP=$(awk '{print $1}' ${FTEMPMAX} |tail -n1)
  99. TEMINTEMP=$(awk '{print $1}' ${FTEMPMIN} |tail -n1)
  100.  
  101. # Regenmenge von heute
  102. TERAINTODAY=$(awk '{print $1}' ${FRAINTODAY} |tail -n1)
  103.  
  104. # Staerkster Wind von heute
  105. TEMAXWIND=$(awk '{print $1}' ${FMAXWIND} |tail -n1)
  106.  
  107. # Sonnenaufgangszeit
  108. TESUNRISE=$(awk '{print $1}' ${FSUNRISE} |tail -n1)
  109.  
  110. # Sonnenuntergangszeit
  111. TESUNDOWN=$(awk '{print $1}' ${FSUNDOWN} |tail -n1)
  112.  
  113. TESNOW=$(awk '{print $1}' ${FSNOW} |tail -n1)
  114. TETENDENCY=$(awk '{print $1}' ${FTENDENCY} |tail -n1)
  115.  
  116. ## Daten fuer wp_${HOMEPAGE} aufbereiten ##
  117.  
  118. # Datum verarbeiten
  119. TEDATEDAY=$(echo ${TEDATE}|cut -b 10-11)
  120. TEDATEMONTH=$(echo ${TEDATE}|cut -b 6-8)
  121. TEDATEYEAR=$(echo ${TEDATE}|cut -b 1-4)
  122.  
  123. # Monatsangabe in 2 stellige Zahl umwandeln
  124. case ${TEDATEMONTH} in
  125.   "Jan" )
  126.     TEDATEMONTH="01"
  127.     ;;
  128.   "Feb" )
  129.     TEDATEMONTH="02"
  130.     ;;
  131.   "Mar" )
  132.     TEDATEMONTH="03"
  133.     ;;
  134.   "Apr" )
  135.     TEDATEMONTH="04"
  136.     ;;
  137.   "May" )
  138.     TEDATEMONTH="05"
  139.     ;;
  140.   "Jun" )
  141.     TEDATEMONTH="06"
  142.     ;;
  143.   "Jul" )
  144.     TEDATEMONTH="07"
  145.     ;;
  146.   "Aug" )
  147.     TEDATEMONTH="08"
  148.     ;;
  149.   "Sep" )
  150.     TEDATEMONTH="09"
  151.     ;;
  152.   "Oct" )
  153.     TEDATEMONTH="10"
  154.     ;;
  155.   "Nov" )
  156.     TEDATEMONTH="11"
  157.     ;;
  158.   "Dec" )
  159.     TEDATEMONTH="12"
  160.     ;;
  161. esac
  162.  
  163. # ENDLICH - der Monat im Zahlenformat - kein Buchstabensalat mehr
  164. # NEUES DATUM FUER WETTERPOOL
  165. NEWDATE=$(echo "${TEDATEDAY}.${TEDATEMONTH}.${TEDATEYEAR}")
  166.  
  167. # Zeit - nur Zeile 1 bis 5 ausgeben - ohne Sekunden
  168. TIME=$(echo ${TETIME} |cut -b 1-5)
  169. #
  170.  
  171. ## Windgeschwindigkeit - Durchschnitt von 10 Minuten - 1 Minute Intervall
  172. rm ${CWD}/wspeeds.txt
  173. WSPEEDS=$(awk '{print $9}' ${LOGFILE} |tail -n10)
  174. echo ${WSPEEDS} > ${CWD}/wspeeds.txt
  175. WS1=$(awk '{print $1}' ${CWD}/wspeeds.txt)
  176. WS2=$(awk '{print $2}' ${CWD}/wspeeds.txt)
  177. WS3=$(awk '{print $3}' ${CWD}/wspeeds.txt)
  178. WS4=$(awk '{print $4}' ${CWD}/wspeeds.txt)
  179. WS5=$(awk '{print $5}' ${CWD}/wspeeds.txt)
  180. WS6=$(awk '{print $6}' ${CWD}/wspeeds.txt)
  181. WS7=$(awk '{print $7}' ${CWD}/wspeeds.txt)
  182. WS8=$(awk '{print $8}' ${CWD}/wspeeds.txt)
  183. WS9=$(awk '{print $9}' ${CWD}/wspeeds.txt)
  184. WS10=$(awk '{print $10}' ${CWD}/wspeeds.txt)
  185.  
  186. SUM=$(echo "scale=5 ; $WS1+${WS2}+${WS3}+${WS4}+${WS5}+${WS6}+${WS7}+${WS8}+${WS9}+${WS10}" | bc) # Summe in m/s
  187. WFACTOR=3.6 ## m/s -> km/h wandeln
  188.  
  189. if [ ${SUM} = 0 ]; then
  190. # Wenn kein Wind da ist, brauchen wir erst gar nicht zu rechnen
  191. WSPEEDAVG10=0
  192. else
  193. # Wenn doch Wind da ist... Teiler fuer den Winddurchschnitt ermitteln
  194. if [ ${WS1/.*} -gt 0 ]; then
  195. TEILER=1
  196. else
  197. TEILER=0
  198. fi
  199.  
  200. if [ ${WS2/.*} -gt 0 ]; then
  201. TEILER=$((TEILER + 1))
  202. fi
  203.  
  204. if [ ${WS3/.*} -gt 0 ]; then
  205. TEILER=$((TEILER + 1))
  206. fi
  207.  
  208. if [ ${WS4/.*} -gt 0 ]; then
  209. TEILER=$((TEILER + 1))
  210. fi
  211.  
  212. if [ ${WS5/.*} -gt 0 ]; then
  213. TEILER=$((TEILER + 1))
  214. fi
  215.  
  216. if [ ${WS6/.*} -gt 0 ]; then
  217. TEILER=$((TEILER + 1))
  218. fi
  219.  
  220. if [ ${WS7/.*} -gt 0 ]; then
  221. TEILER=$((TEILER + 1))
  222. fi
  223.  
  224. if [ ${WS8/.*} -gt 0 ]; then
  225. TEILER=$((TEILER + 1))
  226. fi
  227.  
  228. if [ ${WS9/.*} -gt 0 ]; then
  229. TEILER=$((TEILER + 1))
  230. fi
  231.  
  232. if [ ${WS10/.*} -gt 0 ]; then
  233. TEILER=$((TEILER + 1))
  234. fi
  235.  
  236. # Der Teiler darf nicht Null werden
  237. if [ ${TEILER} -gt 0 ]; then
  238. echo "Teiler ist schon groesser 0"
  239. else
  240. TEILER=1
  241. fi
  242.  
  243. TEMP=$(echo "scale=5 ; $SUM*$WFACTOR" | bc)
  244. SUM=${TEMP}
  245. WSPEEDAVG10=$(echo "($SUM)/($TEILER)" |bc)
  246. fi
  247.  
  248. ## Windrichtung - Durchschnitt 10 Minuten - bei 1 Minute Intervall
  249. rm ${CWD}/wdirs.txt
  250. WDIRS=$(awk '{print $10}' ${LOGFILE} |tail -n10|cut -b 1-3)
  251. echo ${WDIRS} > ${CWD}/wdirs.txt
  252. WDIR1=$(awk '{print $1}' ${CWD}/wdirs.txt)
  253. WDIR2=$(awk '{print $2}' ${CWD}/wdirs.txt)
  254. WDIR3=$(awk '{print $3}' ${CWD}/wdirs.txt)
  255. WDIR4=$(awk '{print $4}' ${CWD}/wdirs.txt)
  256. WDIR5=$(awk '{print $5}' ${CWD}/wdirs.txt)
  257. WDIR6=$(awk '{print $6}' ${CWD}/wdirs.txt)
  258. WDIR7=$(awk '{print $7}' ${CWD}/wdirs.txt)
  259. WDIR8=$(awk '{print $8}' ${CWD}/wdirs.txt)
  260. WDIR9=$(awk '{print $9}' ${CWD}/wdirs.txt)
  261. WDIR10=$(awk '{print $10}' ${CWD}/wdirs.txt)
  262.  
  263. SUM=$(echo "scale=5 ; ${WDIR1}+${WDIR2}+${WDIR3}+${WDIR4}+${WDIR5}+${WDIR6}+${WDIR7}+${WDIR}8+${WDIR9}+${WDIR10}" | bc)
  264.  
  265. if [ ${SUM} = 0 ]; then     # Wenn kein Wind da ist, brauchen wir erst gar nicht zu rechnen
  266. WDIRAVG10=0
  267. else
  268. WDIRAVG10=$(echo "${SUM}/10" |bc)   # ansonsten doch
  269. fi
  270.  
  271. # Wetterpool schreiben
  272. echo "%alwaysseppoint_on%" >> ${CWD}/${WETTERPOOL};
  273. echo "(TCUR_ ${TEOUTTEMP})" >> ${CWD}/${WETTERPOOL};
  274.  
  275. # Wenn WeatherOffice vorhanden ist
  276. if [ ${WEATHEROFFICE} = yes ]; then
  277. echo "(TMIN_ ${TEMINTEMP})" >> ${CWD}/${WETTERPOOL};
  278. echo "(TMAX_ ${TEMAXTEMP})" >> ${CWD}/${WETTERPOOL};
  279. echo "(TCH1_ ${TEDIFFTEMP60})" >> ${CWD}/${WETTERPOOL};
  280. echo "(TCM30 ${TEDIFFTEMP30})" >> ${CWD}/${WETTERPOOL};
  281. echo "(RRD1_ ${TERAINTODAY})" >> ${CWD}/${WETTERPOOL};
  282. echo "(WMX__ ${TEMAXWIND})" >> ${CWD}/${WETTERPOOL};
  283. echo "(PCH1_ ${TEDIFFHPA60})" >> ${CWD}/${WETTERPOOL};
  284. echo "(PCH3_ ${TEDIFFHPA180})" >> ${CWD}/${WETTERPOOL};
  285. echo "(SNL__ ${TESNOW})" >> ${CWD}/${WETTERPOOL};
  286. else
  287. # Wenn WeatherOffice nicht vorhanden ist
  288. echo "(TMIN_ - -)" >> ${CWD}/${WETTERPOOL};
  289. echo "(TMAX_ - -)" >> ${CWD}/${WETTERPOOL};
  290. echo "(TCH1_ - -)" >> ${CWD}/${WETTERPOOL};
  291. echo "(TCM30 - -)" >> ${CWD}/${WETTERPOOL};
  292. echo "(RRD1_ - -)" >> ${CWD}/${WETTERPOOL};
  293. echo "(WMX__ - -)" >> ${CWD}/${WETTERPOOL};
  294. echo "(PCH1_ - -)" >> ${CWD}/${WETTERPOOL};
  295. echo "(PCH3_ - -)" >> ${CWD}/${WETTERPOOL};
  296. echo "(SNL__ - -)" >> ${CWD}/${WETTERPOOL};
  297. fi
  298.  
  299. echo "(HGTNN ${STATIONSHOEHE})" >> ${CWD}/${WETTERPOOL};
  300. echo "(WCUR_ ${TEWINDSPEED})" >> ${CWD}/${WETTERPOOL}
  301. echo "(WCURA ${WSPEEDAVG10})" >> ${CWD}/${WETTERPOOL};
  302. echo "(WDIR_ ${TEWINDDIR})" >> ${CWD}/${WETTERPOOL}
  303. echo "(WDIRA ${WDIRAVG10})" >> ${CWD}/${WETTERPOOL};
  304.  
  305. echo "(RRH1_ ${TERAIN1H})" >> ${CWD}/${WETTERPOOL}
  306. echo "(RRH24 ${TERAIN24H})" >> ${CWD}/${WETTERPOOL}
  307. echo "(PCUR_ ${TEPRESSURE})" >> ${CWD}/${WETTERPOOL}
  308. echo "(RHCUR ${TEOUTHUMIDITY})" >> ${CWD}/${WETTERPOOL}
  309.  
  310. echo "(TDM1_ - -)" >> ${CWD}/${WETTERPOOL};
  311. echo "(T5MIN - -)" >> ${CWD}/${WETTERPOOL};
  312. echo "(RRH2_ - -)" >> ${CWD}/${WETTERPOOL};
  313. echo "(RRH6_ - -)" >> ${CWD}/${WETTERPOOL};
  314. echo "(RRH12 - -)" >> ${CWD}/${WETTERPOOL};
  315. echo "(RRM1_ - -)" >> ${CWD}/${WETTERPOOL};
  316. echo "(RRY1_ - -)" >> ${CWD}/${WETTERPOOL};
  317. echo "(SUND1 - -)" >> ${CWD}/${WETTERPOOL};
  318. echo "(SUNH1 - -)" >> ${CWD}/${WETTERPOOL};
  319. echo "(CLCNB - -)" >> ${CWD}/${WETTERPOOL};
  320. echo "(DAONI - -)" >> ${CWD}/${WETTERPOOL};
  321. echo "(SNHGT - -)" >> ${CWD}/${WETTERPOOL};
  322. echo "(SNHTD - -)" >> ${CWD}/${WETTERPOOL};
  323. echo "(LXCUR - -)" >> ${CWD}/${WETTERPOOL};
  324. echo "(LXMAX - -)" >> ${CWD}/${WETTERPOOL};
  325.  
  326. echo "(TIME_ ${TIME})" >> ${CWD}/${WETTERPOOL}
  327. echo "(DATE_ ${NEWDATE})" >> ${CWD}/${WETTERPOOL}
  328. echo "(PLGNV 1.2)" >> ${CWD}/${WETTERPOOL}
  329.  
  330. # ${HOMEPAGE} fuers php-gd banner erstellen schreiben
  331. rm ${CWD}/${HOMEPAGE}
  332. touch ${CWD}/${HOMEPAGE}
  333.  
  334. echo "${TEOUTTEMP}" >> ${CWD}/${HOMEPAGE};
  335. echo "${TEOUTHUMIDITY}" >> ${CWD}/${HOMEPAGE};
  336. echo "${TEPRESSUREHP}" >> ${CWD}/${HOMEPAGE};
  337. echo "${TEWINDSPEED}" >> ${CWD}/${HOMEPAGE};
  338. echo "${TEWINDDIRHP}" >> ${CWD}/${HOMEPAGE};
  339. echo "${TERAIN1H}" >> ${CWD}/${HOMEPAGE};
  340. echo "${TEDATEDAY}" >> ${CWD}/${HOMEPAGE};
  341. echo "${TEDATEMONTH}" >> ${CWD}/${HOMEPAGE};
  342. echo "${TEDATEYEAR}" >> ${CWD}/${HOMEPAGE};
  343. echo "${TIME}" >> ${CWD}/${HOMEPAGE};
  344. echo "${TETENDENCY}" >> ${CWD}/${HOMEPAGE};
  345. echo "${TEDIFFHPA60}" >> ${CWD}/${HOMEPAGE};
  346. echo "${TERAIN24H}" >> ${CWD}/${HOMEPAGE};
  347. echo "${TERAIN1H}" >> ${CWD}/${HOMEPAGE};
  348. echo "${TERAINTODAY}" >> ${CWD}/${HOMEPAGE};
  349. echo "${WSPEEDAVG10}" >> ${CWD}/${HOMEPAGE};
  350. echo "${TEMAXWIND}" >> ${CWD}/${HOMEPAGE};
  351. echo "${WDIRAVG10}" >> ${CWD}/${HOMEPAGE};
  352. echo "${TEDIFFTEMP60}" >> ${CWD}/${HOMEPAGE};
  353. echo "${TESUNRISE}" >> ${CWD}/${HOMEPAGE};
  354. echo "${TESUNDOWN}" >> ${CWD}/${HOMEPAGE};
  355. echo "${TESNOW}" >> ${CWD}/${HOMEPAGE};
  356. echo "${TEMINTEMP}" >> ${CWD}/${HOMEPAGE};
  357. echo "${TEMAXTEMP}" >> ${CWD}/${HOMEPAGE};
  358. echo "${STATIONSHOEHE}" >> ${CWD}/${HOMEPAGE};
  359. echo "${TEDIFFTEMP30}" >> ${CWD}/${HOMEPAGE};
  360. echo "${TEDIFFHPA180}" >> ${CWD}/${HOMEPAGE};
  361. echo "${TEHPAMIN}" >> ${CWD}/${HOMEPAGE};
  362. echo "${TEHPAMAX}" >> ${CWD}/${HOMEPAGE};
  363.  
  364. # Kontrolle auf Fehlfunktion der open2300 Software bzw. der Sensoren
  365. TEOUTINT=${TEOUTTEMP/.*}
  366. if [ ${TEOUTINT} -gt 65 ]; then
  367. rm ${CWD}/${WETTERPOOL}
  368. fi
  369.  
Add Comment
Please, Sign In to add comment