Jump to content

Recommended Posts

Posted

Hallo beisammen,

 

ich bin neu hier und habe unterschätzt, dass man Programmieren können muss, um das umzusetzen, was ich gerne hätte. Habe nach langer Suche im Netz nun den Masterbrick und den Barometerbricklet gekauft, da ich dies für die beste Lösung befand. Nun habe ich diese Bausteine zu Hause und sie funktionieren.  :)

Mein Wunsch wäre nun, den Luftdruck (z.B. alle 15 Min.) zu speichern, um diesen dann rollierend für z.B. 12 h graphisch anzuzeigen. Ich möchte also die Luftdruckveränderung der jeweils letzten 12 h sehen.

Gibt es denn hier jemanden, der so was schon umgesetzt hat und mir dabei helfen kann - ach so ich arbeite mit Ubuntu 12.04 64bit.

Vielen Dank im voraus

tiberius

Posted

Hallo thunderbird,

 

danke für Deine Antwort. Es soll auf dem Rechner angezeigt werden - eine Anzeige so wie auf Deinem link ist genau das was ich gerne hätte. Bezüglich der Sprache habe ich keine Ahnung, wie gesagt habe das Programmieren vollkommen unterschätzt.

Ist das denn sehr schwierig, dein Programm bei mir zum Laufen zu bringen?

 

Gruß

 

tiberius

Posted

Also ich fürchte meine Lösung ist für nur ein Bricklet viel zu umständlich.

 

Also ich würde dein Problem glaube ich so lösen:

Du schreibst dir in irgend einer Sprache ein Programm das dir alle 15 min den Wert des Bricklets in eine Datei schreibt.

Zusätzlich baust du dir eine Webseite auf der du die Daten darstellst.

Das würde z.B. hiermit gehen http://bl.ocks.org/mbostock/3883245

Das ist recht ausführlich beschrieben.

 

Für das Programm gibt es bei TF eine große anzahl an Sprechen mit Beispielen.

So ein Beispiel könntest du fast 1 zu 1 übernehmen. Du musst nur deine UID eintragen und es so umschreiben das es die Werte in eine Datei schreibt.

Zur Sprache gibt es hier im Forum schon irgendwo einen Eintrag welche die einfachste und beste ist. Aber ich glaube das sieht jeder ein bisschen anders ;-)

 

Posted

Hallo tiberius64,

 

wenn es nur darum geht einen Wert auszulesen, abzuspeichern und dann darzustellen koenntest du mal einen Blick auf diesen Beitrag werfen: "Wetterstation" - Grafische Temperaturanzeige in 10

 

Das ist "im Prinzip" alles dabei, aber leider noch fuer die Software-/firmwareversion 1.x.

Entweder du flashst alle Bricks und Bricklets auf die Firmwareversion 1.x, wovon in aber abrate oder ich muss die Scripte mal an die Version 2.x anpassen.  :o

Aber lese erstmal in Ruhe.

 

Viel Spass dabei.

 

Der Loetkolben

Posted

Hallo beisammen,

@thunderbird, danke für Deine Antwort, jedoch das Schreiben eines Programms in irgendeiner Sprache ist schon das Problem.

 

@Loetkolben, diese Version von Dir klingt vielversprechend. Wenn Du die Scripte an die aktuelle Version anpassen würdest, werde ich mich da drantrauen. Mein Dank ist Dir jetzt schon sicher.

Bei mir hängt der Brick per USB am Rechner, an dem ich auch die grafische Ausgabe realisieren möchte - also kein Internet.

 

Danke an alle

 

tiberius

  • 2 weeks later...
Posted

So, nun habe ich die grafische Temperaturanzeige auf die Version 2 umgestellt.

 

"Wetterstation" - Grafische Temperaturanzeige in 10 Minuten. Jetzt fuer Protokoll Version 2

 

@tiberius64: Ich hoffe du hast ein Temperatur Bricklet und kannst damit erstmal alles zum laufenbringen.

Um dann den Luftdruck zu messen muesstest du entweder die Tinkerforge Bindings mit den Barometer Parametern aufrufen, mein Script anpassen oder ich muesste mein Script selber anpassen.  ;)

 

So, dann schau mal zu.  :)

 

Viel Erfolg.

 

Der Loetkolben

 

Posted

Hallo Loetkolben,

 

vielen Dank für Deine Arbeit und Unterstützung. Habe mal Dein Script runtergeladen und entpackt, nc -w1 in q1 geändert IP und UID eingetragen. Nun kommt das schwierigere: die Ausgabe heißt momentan:

No Packet machted

20130625_16:53:20;1372172000;

Ich gehe davon aus, dass ich nun das Script an das Batrometerbricklet (habe leider nur dieses) anpassen muss. Das mit den Bindings verstehe ich halt nicht -es geht schon mit den Sprachen los.

In deinem Script sehe ich nun bis zu oben genannter Ausgabe Temp1 und Temp2 Einträge - wie heißen denn die richtigen für das Barometer bzw. wo finde ich diese - ich möchte ja selber groß sein? ;)

danke für die Hilfe

tiberius64

Posted

Hallo tiberius64,

na das sieht ja schonmal gut aus. Wenigstens gibt es keine Kommunikationsfehlermeldung.  :)

Die Antwortpakete vom Barometerbricklet kann das Temperaturscript nicht auswerten und verwirft sie.

 

Habe das Barometerscript angepasst und in meinen Thread gepackt.

 

Der Loetkolben

Posted

Es gibt hunderte Antworten woran es liegen koennte.

 

  • Per Brickviewer kommst du drauf?
  • IP und UID im Script richtig? Gross/Kleinschreibung beachtet?
  • Protokolliermal das Empfangspaket in eine Datei. Dazu diese Zeile im Script "aktivieren".
    echo -n -e "$RECEIVEPACKET" | xxd -r -p > RECEIVEPACKET.airpressure.`date "+%Y%m%d_%H%M%S"`
    Dann die Ausgabedatei hier posten. Ausgabe wird erstellt mit: "hexdump -C  RECEIVEPACKET.airpressure.20130625_172926"

 

Edit: Sind alle Tools installiert?

Auf der shell pruefen ob die Linuxtools "nc, bc, od, xxd" installiert sind. "which nc bc od xxd"

Hatte urspruenglich "xxd" vergessen aufzulisten.

 

Der Loetkolben

Posted

Per Brickviewer bekomme ich den Graph und die Ausgabe in mbar

IP habe ich nun auf "localhost" umgestellt, UID überprüft. Die Ausgabe nun:

Arbeitsfläche/barometer/airpressure-get.sh: Zeile 34: /home/tinker/RECEIVEPACKET.airpressure.20130625_174307: Datei oder Verzeichnis nicht gefunden

 

Der Luftdruck betraegt: 1012.89 mbar.

Parameter x gibt Logfileoutputformat.

 

die echo Zeile wieder auskommentiert ergibt dann:

 

Der Luftdruck betraegt: 1012.89 mbar.

Parameter x gibt Logfileoutputformat.

 

Ich glaube Du bringst mich auf den richtigen Pfad. :)

 

werde nun nach Deiner Anleitung weiter gehen und mich wieder melden.

 

danke

tiberius

 

 

 

 

Posted

Hallo tiberius64.

 

Natuerlich kann er keine Datei nach "/home/tinker/..." schreiben. Das ist ein Beispielpfad.

Da muss natuerlich dein Pfad rein, oder der Pfad ganz raus.

 

Die Zeile kannst du aber jetzt wieder mit Kommentarzeichen versehen, da du Ergebnisse bekommst.

 

Jetzt noch das "x" als Parameter angeben und die Sache per Cron einbinden. Bitte auf die Pfade achten.

 

Der Loetkolben.

Posted

nun, habe dies per cron eingebunden die Pfade korrigiert und statt temperatur airpressure angegeben - ich glaube ich bewege mich nun wieder auf dem Holzweg. Eine temperatur.html liegt im Verzeichnis, leider leer. Ich denke die drawhtml muss noch auf airpressure angepasst werden? Ersetze ich da einfach temperatur gegen airpressure?

wieder schon mal danke

tiberius

 

bin mir nicht sicher wie ich das deuten soll, habe die drawhtml nochmal gestartet und diese Ausgabe bekommen:

 

sabine@sabine:~$ /home/sabine/Arbeitsfläche/barometer/drawhtml.shtail: »/home/sabine/Arbeitsfläche/barometer/temperatur.collect“ kann nicht zum Lesen geöffnet werden: Datei oder Verzeichnis nicht gefunden

cp: »temperatur.html“ und »/home/sabine/Arbeitsfläche/barometer//./temperatur.html“ sind die gleiche Datei

 

Posted
Ersetze ich da einfach temperatur gegen airpressure?

 

Nein, erstmal nicht. ob die Ausgabedatei temperatur.html, airpressure.html oder ganzanders.html heisst ist erstmal egal. Wenn alles stimmt kannst du auch die Namen aendern. Du must nur die 3 Pfade in "drawhtml.sh" anpassen, so wie ich es beschrieben habe.

 

#Directory wo dieses Script liegt
DIRECTORY=/home/tinker (Der Absolute Pfad wo diese "drawhtml.sh" liegt, beginnend mit "/". Nutze das Kommando "pwd")

#Directory wo die temperatur.html Datei zum Schluss hinkopiert werden soll.
WWWDIRECTORY=/var/www

#Directory wo die Datenquelle ist
DATAINPUT=/home/tinker/temperatur.collect (Hier der Absolute Pfad mit Dateinamen von der Datei in der die Daten gesammelt werden. Dies ist genau der Pfad und die Datei die du im Cron Job hinter ">>" angegeben hast)

 

Werden denn schon Daten gesammelt? Wie sieht die *.collect Datei aus?

 

Der Loetkolben

 

 

Posted

da war ich wohl mit dem umbenennen zu schnell ???

 

temperatur collect sammelt: :)

20130625_18:46:03;1372178763;1013.59

20130625_18:47:02;1372178822;1013.60

20130625_18:48:02;1372178882;1013.60

20130625_18:49:02;1372178942;1013.60

20130625_18:50:02;1372179002;1013.61

20130625_18:51:02;1372179062;1013.60

20130625_18:52:02;1372179122;1013.63

20130625_18:53:03;1372179183;1013.65

20130625_18:54:02;1372179242;1013.66

20130625_18:55:02;1372179302;1013.67

20130625_18:56:02;1372179362;1013.67

 

Der Graph wird auch gezeichnet, aber nicht automatisch aktualisiert, nur mit F5 - gibt es da noch einen Trick? Habe dazu laut Deiner Anleitung noch in "airpressure-get.sh" den absoluten Pfad zu meiner "drawhtml.sh" angegeben.

 

Suuper - so weit,

 

vielen dank

tiberius

 

Posted

Hallo tiberius64,

 

na dann Glueckwusch erstmal.  ;)

Das mit dem Refresh ist nun aber HTML.  ;)  Vielleicht so: Reload All By Itself. Dann sollte der Browser die Seite nach 60 Sekunden neu laden. Ich bin mir nicht sicher ob das geht, da ich das noch nie probiert habe.

Das Ergebnis kann man gut nachvollziehen, da in der Seite normalerweise die Uhrzeit (Erstellzeit der Seite) mit angezeigt wird.

 

In der Datei "file.temperatur_top.html" die blaue Zeile hinzufuegen. Zeit (60) sind Sekunden.

 

 <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="expires" content="0">
    [color=blue]<meta http-equiv="refresh" content="60">[/color]
...

 

BTW: Natuerlich musste in der "airpressure-get.sh" noch der Aufruf der "drawhtml.sh" mit rein.  ;)

 

Wenn jetzt alles passt, kannst du langsam, Stueck fuer Stueck, die Textanpassungen von "Temperatur" nach "Airpressure" machen.

 

Zum Cronjob: Wenn du alle 15 Minuten einen Wert abfragen moechtest musst du die Zeile in der crontab so beginnen lassen:

0,15,30,45 * * * * /home/tinker/temperatur-get.sh ...

 

 

Der Loetkolben

Posted

Hallo Loetkolben,

 

vielen Dank für Deine Hilfe.

Mit dem Cronjob werde ich mich noch beschäftigen, da ich nur, wenn ich das Barometer auch angesteckt habe, dieses auch auslesen möchte.

Bezüglich der Aktualisierung des Browsers hat das manuelle auch seinen Charme - aber danke für den link und wiederum Deine Anleitung.

Darf ich Dich bei Bedarf nochmals aktivieren, oder ist Deine Geduld mit mir zu Ende?

Alles in allem hast Du eine super Anleitung erstellt und ohne Deine Hilfe hätte ich wahrscheinlich irgendwann aufgegeben - wie Du in Deinem post schon sagtest, es ist einfacher an etwas bestehendem zu optimieren.

Danke nochmals

tiberius

Posted
wie Du in Deinem post schon sagtest, es ist einfacher an etwas bestehendem zu optimieren.

 

Hallo tiberius64,

 

alles in Ordnung.  :)  Du kannst gerne im Forum nochmals Fragen stellen wenn du vor einem Raetzel stehst. Ich denke auch viele andere koennen und werden dir weiterhelfen.

 

Niemand kann dir hier eine massgeschneiderte Loesung bauen, aber einen Anschub kannst du immer bekommen. Dann allerdings musst du dich selbst einarbeiten und in Richtung auf dein Ziel laufen.

 

Du solltest dir auch nochmals die Tinkerforge Bindings ansehen oder dich gleich in die Programmiersprache Python einarbeiten. Dann stehen dir noch wesentlich mehr Moeglichkeiten mit Tinkerforge offen.

 

Weiterhin viel Erfolg.

 

Der Loetkolben

 

  • 5 years later...
Posted

Hallo Loetkolben,

hier bin ich wieder und brauche nochmals Deine Hilfe - falls Du wieder so nett wärst. Ich stehe vor derselben Ausgabe wie in Post #10:

No Packet machted

20180806_18:09:02;1533571742;

und komme wieder nicht weiter. Was sich geändert hat: Ich habe einen neuen Rechner und Ubuntu 18.04 drauf.

Was kann ich tun?

Gruß tiberius64

  • 4 years later...
Posted

Hi Tiberius,

ich hatte das gleiche Problem nun, nachdem ich nach langer Zeit mal wieder mich damit befaßt habe und mein altes Ubuntu 12 mit dem neuen 22 ersetzen mußte. Es scheint, daß neue Ubuntu Versionen nun Befehle mehr wie im Debian interpretieren..Jedenfalls habe ich in der Zeile 31 des airpressure-get.sh , das "q1" wieder in "w1" geändert. Siehe hier : RECEIVEPACKET=`echo -n -e "$SENDPACKET" | nc -w1 $HOST $PORT | xxd -p` ...Bei mir geht es nun wieder...viel Glück...Wolfgang

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...