NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
-
@Thomas-Braun sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Das fängt so an?
Nö, Originalscript
#!/bin/bash # V1.4.0 - 30.10.2020 (c) 2019-2020 SBorg # # wertet ein Datenpaket einer WLAN-Wetterstation im Wunderground-Format aus, konvertiert dieses und überträgt # die Daten an den ioBroker # # benötigt den 'Simple RESTful API'-Adapter im ioBroker, 'jq' (nur openSenseMap) und 'bc' unter Linux # # V1.4.0 / 30.10.2020 - + Support für openSenseMap # V1.3.1 / 08.10.2020 - ~ Fix falls Leerzeichen im Verzeichnisnamen # V1.3.0 / 19.06.2020 - + letztes Regenereignis und Regenmenge # + Fehlermeldung bei falscher WS_ID / ID der Wetterstation # + Sonnenscheindauer + Solarenergie vom Vortag # ~ Änderung/Fix Sonnenscheindauer # V1.2.0 / 20.04.2020 - + Firmwareupgrade verfügbar? # + Firmwareversion # + Sonnenscheindauer Heute, Woche, Monat, Jahr # + UV-Belastung # + Solarenergie Heute, Woche, Monat, Jahr # + Vorjahreswerte von Regenmenge, Sonnenscheindauer und Solarenergie # V1.1.0 / 03.04.2020 - + aktueller Regenstatus # + Luftdrucktendenz, Wettertrend und aktuelles Wetter # V1.0.0 / 12.03.2020 - + Berechnung Jahresregenmenge # + Windrichtung zusätzlich als Text # ~ Änderung "Regen Aktuell" in "Regenrate" # ~ Splitt in conf- + sub-Datei # V0.1.3 / 08.02.2020 - + Unterstützung für Datenpunkt "Regenmenge Jahr", zB. für Froggit WH4000 SE # + Shell-Parameter -s (Klartextanzeige Passwort + Station-ID) # + Shell-Parameter --data (zeigt nur das gesendete Datenpaket der Wetterstation an) # V0.1.2 / 31.01.2020 - + Prüfung auf Datenintegrität # + neuer Datenpunkt bei Kommunikationsfehler # + Ausgabe Datenpaket der Wetterstation bei Debug # V0.1.1 / 01.01.2020 - + UTC-Korrektur # + Config-Versionscheck # + Shell-Parameter -v/-h/--debug # V0.1.0 / 29.12.2019 - erstes Release SH_VER="V1.4.0" CONF_V="V1.4.0" SUBVER="V1.4.0" #Installationsverzeichnis feststellen DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" #Config-Version prüfen VER_CONFIG=$(cat "${DIR}/wetterstation.conf"|grep '### Setting'|cut -d" " -f3) if [ $CONF_V != $VER_CONFIG ]; then echo -e "wetterstation: \e[31mERROR #000 - Config-Version mismatch!\n" echo -e "benutzt: $VER_CONFIG\t benötigt wird: $CONF_V$WE" exit 1 fi #Sub-Version prüfen SUB_CONFIG=$(cat "${DIR}/wetterstation.sub"|grep '### Subroutinen'|cut -d" " -f3) if [ $SUBVER != $SUB_CONFIG ]; then echo -e "wetterstation: \e[31mERROR #001 - Subroutinen-Version mismatch!\n" echo -e "benutzt: $SUB_CONFIG\t benötigt wird: $SUBVER$WE" exit 1 fi #Konfiguration lesen + Subroutinen laden . "${DIR}/wetterstation.conf" . "${DIR}/wetterstation.sub" #gibt es Parameter? while [ "$1" != "" ]; do case $1 in --debug ) debug=true #override ;; --osem_reg ) osem_register exit ;; -s | --show ) show_pwid=true ;; -d | --data ) setup ws_data exit ;; -v | --version ) version exit ;; -h | --help ) usage exit ;; * ) usage exit 1 esac shift done #Setup ausführen setup #Endlosschleife while true do #Kommunikation herstellen und Daten empfangen get_DATA #KOM-Fehler? if [ "$?" -eq "0" ]; then #DATA zerlegen (Messwerte Block #3-#22) ii=2 for ((i=0; i<20; i++)) do let "ii++" MESSWERTERAW[$i]=$(echo ${DATA}|cut -d'&' -f${ii} | cut -d"=" -f2) MESSWERTE[$i]=${MESSWERTERAW[$i]} if [ "$i" -ge "0" ] && [ "$i" -lt "4" ]; then convertFtoC; fi if [ "$i" -eq "6" ] || [ "$i" -eq "7" ]; then convertMPHtoKMH; fi if [ "$i" -eq "8" ]; then winddir; fi if [ "$i" -eq "9" ] || [ "$i" -eq "10" ]; then convertLuftdruck; fi if [ "$i" -ge "11" ] && [ "$i" -lt "16" ]; then convertInchtoMM; fi if [ "$i" -eq "16" ]; then sonnenpuls; fi if [ "$i" -eq "17" ]; then uv_belastung; fi if [ "$i" -eq "18" ]; then convertTime; fi done #Daten an ioB schicken iob_send else let "KOMFEHLER++" if [ "$KOMFEHLER" -eq "5" ]; then curl "http://${IPP}/set/${DP_KOMFEHLER}?value=true&ack=true" >/dev/null 2>&1;fi fi #Debug eingeschaltet? if [ $debug == "true" ]; then debuging; fi #Mitternachtjobs if [ `date +%H` -ge "23" ] && [ `date +%M` -ge "58" ] && [ -z $MIDNIGHTRUN ]; then rain #Jahresregenmenge firmware_check #neue Firmware reset_zaehler #Sonnenscheindauer, Solarenergie zurücksetzen (enthällt auch Speicherung Werte VorJahr) fi if [ `date +%H` -eq "0" ] && [ `date +%M` -le "3" ]; then unset MIDNIGHTRUN; fi #Wetterprognose DO_IT=`date +%M` DO_IT=${DO_IT#0} if [ $(( $DO_IT % 15 )) -eq "0" ] && [ `date +%s` -ge "$TIMER_SET" ]; then wetterprognose; fi #openSenseMap if [ ${openSenseMap} == "true" ]; then opensensemap; fi done ###EoF
-
@Negalein
Sag ich doch...Vermutlich beim copy&paste die shebang nicht mitkopiert.
-
So, es klappt jetzt soweit erstmal.
Ich habe alle drei Dateien gelöscht und nochmal neu erstellt.
Danach habe ich auf Github die drei Dateien angeklickt, aufgerufen und dort alles kopiert.
Vorher habe ich das Projekt von Github als ZIP-Datei gedownloadet und die drei Dateien mit Notepad geöffnet, alles markiert, kopiert und in Putty eingefügt.
Das scheint wohl nicht zu klappen.
Jetzt führe ich laut Anleitung noch folgenden Punkt durch und hoffe das dann alles funktioniert.
Einstellung als Autostart (Möglichkeit #1 per systemd)
Ich danke euch.
-
@chrissi1 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
mit Notepad
Achtung, Windows Notepad nutzt andere Zeilenschaltungen als Linux.
-
-
@Negalein Notepad++ habe ich verwendet, aber naja.
-
Immerhin scheinen doch wesentlich mehr das Projekt zu nutzen als die 10 Up-Votings im Eingangspost vermuten lassen. Stellenweise fragt man sich nämlich schon ob die viele Zeit sinnvoll verbraten ist
Leider kann ich über GitHub auch nicht die Anzahl der Downloads ermitteln. Was mir aber auffiel, seit ich mit OSEM-Programmierung anfing, kamen so 1-2 SenseBoxen pro Woche dazu.
Erste Beta: +10 SenseBoxen
offizielle Veröffentlichung der V1.4.0: binnen 6 Stunden +40 SenseBoxen
...und seit Beginn bis Heute insgesamt rund +80 SenseBoxenJa ich könnte auch ein "NachHausefunken" implementieren und darüber die Anzahl der Installationen ermitteln, aber da bin ich kein Freund von (und ja, ich kann das auch fest einbauen damit man es nicht deaktivieren kann. Auch ein Shell-Skript lässt sich binär codieren...) und der "Nutzen" liegt dann genau wo?
Vielleicht denkt also der stille User/Nutzer mal darüber nach 5 Sekunden Zeit zu investieren und im 1. Post ein Up-Vote da zulassen. Kostet nix, ich bekomme dafür auch nix, nur sehe ich halt, dass mehr Interesse besteht als nur der "harte Kern" der hier regelmäßig postet und ggf. eine angestiegene Anzahl von SenseBox-Registrierungen...
-
@SBorg Up-Vote ist das kleinste Problem.
-
@SBorg oops, grad erledigt.
-
Alles gut
...nur wenn es keiner nutzt, weiß ich auch besseres mit meiner Zeit anzufangenOSEM läuft auch:
Desegen bin ich gerade so bisserl am planen einer Road-Map wo die Reise hingehen soll. Für das Statistik-Modul gibt es die Tage noch ein Update. Damit sollte der Monatsreset zum 01. des Monats korrekt funktionieren (typisches JS([Programmierer]-Problem. Funktion A ist noch am werkeln, da will die gerade laufende Funktion B schon Daten von A haben...).
Auch wenn ich die *.conf nur selten anrühre (dafür habe ich sie ja extra damals ausgegliedert), ist es mit/seit OSEM nicht prickelnd wenn man sie aus versehen überschreibt. Deswegen schwebt mir noch eine Update-Routine vor, die das Ganze vereinfacht.Des weiteren habe ich noch paar € Spenden über (nochmals Danke an dieser Stelle), die ich in DIY - Wetterstation-PimpOn investieren werde. Hier steht an 1. Stelle ein echter Regensensor, gefolgt von einem Luftgütesensor. Weiteres muss man sehen (zB. Bodenfeuchte, O³, Nebel ...). Das wird aber auch Hardware-Gebastel. Besteht daran öffentliches Interesse?
An die Aktion mit Ecowitt (Sensoren + Gateway) mache ich offiziell ein Haken. Nach ~3.5 Monaten Wartezeit sind die Samples wohl nicht mehr zu erwarten...
-
@SBorg Hi, ich hab vorletzte Woche oder so meinen iobroker von ner 2 Jahre alten VM in n lxc umgezogen, und dabei jetzt auch das script auf V1.40 installiert, läuft alles super, vielen Dank!
Dadurch ist das OSEM etwas an mir vorbei gegangen.. das ist doch nur, um die Daten öffentlich darzustellen, oder ?
oder hat das noch n Vorteil ? -
@SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Hier steht an 1. Stelle ein echter Regensensor, gefolgt von einem Luftgütesensor. Weiteres muss man sehen (zB. Bodenfeuchte, O³, Nebel ...). Das wird aber auch Hardware-Gebastel. Besteht daran öffentliches Interesse?
Ja, definitiv.
Wegen dem Gebastel muss ich mir zwecks Handicap dann was überlegen. -
@SBorg ich hätte da ein paar AZDelivery 5 x Bodenfeuchtesensor rum liegen. kann man damit was anfangen? wenn ja, schick ich dir gern einen...
-
@ilovegym sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Dadurch ist das OSEM etwas an mir vorbei gegangen.. das ist doch nur, um die Daten öffentlich darzustellen, oder ?
oder hat das noch n Vorteil ?Jepp, du kannst es auch einfach in der *.conf auf false stehen lassen und gut ist. Ich bin ein Freund von "...alles kann, aber nix muss..."
Hintergrund ist einfach die Daten jedem zur Verfügung zu stellen. So könnte man auch mal ein Adapter für eine virtuelle Wetterstation bauen. Du hast bspw. keine weil Mietwohnung, möchtest aber trotzdem gerne Dinge smart regeln. Zum Glück gibt es aber in deiner Nähe/Stadt eine Wetterstation. Adapter installiert, schon hast du deine "eigene" Wetterstation.@Negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Wegen dem Gebastel muss ich mir zwecks Handicap dann was überlegen.
Ich möchte dafür eh in China Platinen fertigen lassen. Die gibt es sowieso nur im 5er(oder 10er?) - Lot. Widerstände sogar im 100er Pack usw. Wenn ich also Kleinteile ordere habe ich immer x-Sätze übrig. Ich kann/will/darf eh keinen Handel betreiben, könnte mir aber für 4-9 (je nach Platinen halt) freiwilligen Spenden a 12,43 € (Beispiel, aber teuer wird es dank China sowieso nicht) vorstellen, als Dankeschön gratis übrig gebliebenes Material kostenfrei an die Spender als einmalige Aktion zu verschicken. Braucht man dann nur zB. den Luftgütesensor. Den kann ich bspw. nicht mit ordern, da der bei einem Stückpreis von 10-12 € einfach zu teuer wäre (Zoll etc.).
...und im Spezialfall kann ich es auch ggf. zusammen tackern, solange dann das Porto nach Ö noch passabel ist. So ein Platinchen dürfte wohl nicht die Welt kosten?@da_Woody sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@SBorg ich hätte da ein paar AZDelivery 5 x Bodenfeuchtesensor rum liegen. kann man damit was anfangen? wenn ja, schick ich dir gern einen...
Ich kann immer Unterstützung gebrauchen. Wenn du noch ein Gehäuse (ich habe keinen 3D-Drucker) drauf legen könntest wäre ich happy
Versorgt müsste das Ganze mit einem Steckernetzteil werden (ich kann/darf 230V, da soll aber keiner mit in Berührung kommen). Solar scheidet wg. der Kosten aus, da hier doch ein Recht großes Panel zum Einsatz kommen müsste wegen zB. des Luftgütesensors.
Bleibt nur die Frage Funk wie bei der Wetterstation vs. WLAN. Funk würde im Haus einen zusätzlichen Empfänger unabdingbar machen. -
@SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Ich möchte dafür eh in China Platinen fertigen lassen. Die gibt es sowieso nur im 5er(oder 10er?) - Lot. Widerstände sogar im 100er Pack usw. Wenn ich also Kleinteile ordere habe ich immer x-Sätze übrig. Ich kann/will/darf eh keinen Handel betreiben, könnte mir aber für 4-9 (je nach Platinen halt) freiwilligen Spenden a 12,43 € (Beispiel, aber teuer wird es dank China sowieso nicht) vorstellen, als Dankeschön gratis übrig gebliebenes Material kostenfrei an die Spender als einmalige Aktion zu verschicken. Braucht man dann nur zB. den Luftgütesensor. Den kann ich bspw. nicht mit ordern, da der bei einem Stückpreis von 10-12 € einfach zu teuer wäre (Zoll etc.).
...und im Spezialfall kann ich es auch ggf. zusammen tackern, solange dann das Porto nach Ö noch passabel ist. So ein Platinchen dürfte wohl nicht die Welt kosten?Das wäre super!
Porto ist kein Problem, da ich eh in DE auch eine Adresse habe.
Ist nur der Inn dazwischen. Bin quasi halb Bayer -
@SBorg verstehe ich das richtig - du würdest so ein gerät für einen zusammenbauen - bin da nicht so gut drin
spende könnte ja ein z.b amazongutschein sein ?
mein eigener regesensor arbeitet immer nur einmal - dann setzt er wieder für einen tag aus
-
@liv-in-sky sagte in [Linux Shell-Skript] WLAN-Wetterstation:
du würdest so ein gerät für einen zusammenbauen -
Für zwei "Spezialfälle" bestimmt
Das wird auch nicht wahnsinnig komplex werden. Ist nur eine Spannungsversorgung 12V/5V/3.3V für die diversen Sensoren und etwas Außenbeschaltung für die Sensoren. Dann noch paar SDA/SDL-, I2C-Buchsen als Reserve für die gängigsten Sensoren und Anschlussklemmen für das übrige. Und natürlich noch ein ESPMuss dass aber eh erst planen, Schaltbild, Platine... usw. dann kann ich auch etwas zu den Kosten sagen.
-
@SBorg mach dir keinen stress - wenn du was hast, gehts weiter und wäre dankbar für die löt und platinenarbeit - etwas zusammenschrauben oder in ein gehäuse einbauen, werd ich schon hinbekommen
ps: ich würde wlan bevorzugen
-
@liv-in-sky sagte in [Linux Shell-Skript] WLAN-Wetterstation:
ps: ich würde wlan bevorzugen
Darauf wird es wohl hinauslaufen, da man dann direkt an den ioB senden kann und es wesentlich weniger Hardwareaufwand ist.