Posts by joh.raspi

    Wie sieht denn dein Aufbau aus?


    Meistens ist der Grund entweder die Stromversorgung und/oder nicht richtig (bzw. überhaupt nicht) beschaltete GPIOs.
    GPIO0 sollte auf jeden Fall einen Pullup Widerstand nach 3.3V haben. Zur sicherheit auch noch einen für Reset und GPIO2.

    Hi,


    Zu 1&2.: root brauchts du keine Berechtigungen zu erteilen, der darf auch so alles. :)


    Noch was: Da du das bashscript in die crontab vom root eingetragen hast werden alles Skripte und auch alle Befehle darin als root ausgeführt. Das sudo in dem Bashskript ist daher überflüssig.



    PS: In etwa so:?

    Bash
    #!/bin/bash
    volts=$(i2cget -y 1 0x48 0x43)
    trunc_volts=$(echo $volts | awk '{ printf "%.2f\n", (($0 - 44) * 0.0758 +5.11); }')
    echo $(date +"%X") - $trunc_volts  > /var/www/spannung/volt.txt


    Der Eintrag sieht dann so aus:

    Code
    12:38:26 - 1.77

    Find ich super :thumbs1: und werd dich unterstützen soweit es mir möglich ist. :)
    Ich werd die Tage auch noch einen einfachen (NodeMCU) Temperatur Logger vorstellen. Um mal kurz das imho wichtigste zu spoilern:
    Hardware besteht aus einem ESP(-01), DS18B20 und einem MCP1702. Der Stromverbrauch im Standby(DeepSleep) beträgt 37µA. Ist also auch für den Batteriebetrieb geeignet. Wie lang das aber schlussendlich hält hängt hauptsächlich vom Log-Interval ab.

    --------------------------------------
    Ich hab eigentlich floflovaldo damit gemeint.
    Dass du das nicht gemacht hast ist mir nach allem was ich schon von dir gelesen hab klar. :)
    Du hast mich auch ein bischen flasch verstanden, ist ja aber jetzt auch nicht weiter wichtig.


    Noch etwas OT:


    Noch kurz zum aktuellen Problem von floflovaldo.


    Also das mit der Auflösung der IP Addresse muss geklappt haben, sonst gäb es ja im Apache Logfile keine entsprechenden Einträge. Er(Apache) sagt aber "400" was "Bad Request" bedeutet. (schnell nachgeschaut)
    Was mir bei den Einträgen auffällt ist dass die angabe des Root Verzeichnisses fehlt "/".
    Ich würde es daher mal so versuchen:

    Code
    String request= String("/raspberry_api.php") + "?value=" + value;



    DNS Aufläsung müsste direkt klappen. Ich habs bei meine Arduino Thingspeak Logger auch so gemacht:

    Code
    const char* host = "api.thingspeak.com";


    Allerdings nutzt mein Beispiel die "WifiClient" und nicht die HTTPClient" Klasse. Weiß jetzt aber nicht ob das ein unterschied macht.


    Grüße,
    Joh

    ZEN
    EO, EO. ... (Den Ohrwurm werd ich heut wohl nicht mehr los. :lol: )
    Ich würd es eher adaptiert nennen. ;)


    --


    Das hört sich so an als ob du einfach nach belieben Unterverzeichnis von hier: https://github.com/esp8266/Arduino/tree/master/libraries in das "libraries" Verzeichnis der Arduino IDE kopierts.
    Falls ja reicht das nicht. Da gehört noch eine ganze Menge mehr dazu.


    Am einfachsten lässt sich die ESP8266 Unterstützung (Mit allen Libraries, Beispielen, Tools und was sonst noch dazu gehört) über den "Boards Manger" installieren:
    https://github.com/esp8266/Ard…lling-with-boards-manager
    Sind nur ein paar kurze Schritte. :thumbs1:

    Schau dir doch mal das WiFIClientBasic oder WiFiClient Beispiel an das neben zig anderen Beispielen (beim installieren der ESP unterstützung) mitinstalliert wurde:
    File->Examples->ESP8266WiFi
    Da wird sehr schön, kurz und knapp gezeigt wie das mit dem senden der Daten funktioniert. :)

    Ach mist, tut mir leid. Da fehlt noch ein Skript:
    https://github.com/8n1/ESP8266…e-time_mod/parse_date.lua
    Hochladen und kompilileren, dann müsste es zumindest mit der IP von google klappen. Habs grad nochmal getest.



    Der Grund wieso es mit der Fritzbox oder vielen anderen Routern nicht klappt ist dass die aus irgendeiniem Grund keinen "Date" Header mitsenden.
    Der Code ist aber auf diesen Header angewiesen denn er macht eigentlich nichts anderers wie genau diesen "Date" Header auszuwerten.


    Der Versuch mit der IP von google hätte bestimmt geklappt wenn ich die parse_date.lua nicht vergessen hätte mit hochzuladen. :shy:


    NTP funktinoiert komplett anders. Da kommt ja auch kein HTTP zum einsatz sondern NTP. Einen "Date" Header den man so einfach auswerten könnte gibt es da nicht.
    Bei NTP muss man sich zuerst mit dem Server synchronisieren, anschließend bekommt man einen Timestamp den man dann weiterverabeiten kann.

    Hi,


    Klar geht das. Auf dem Pi muss nur ein Dienst laufen der die Daten entgegennimmt.


    Ich hab sowas im Moment mit ArrestDB am laufen. Das funktioniert super.
    Wenn es dir(wie mir anfangs auch) wirklich nur um das entgegennehmen der Daten und speichern in der DB geht ist ArrestDB wirklich praktisch. Ich hab damit nur gute erfahrungen gemacht.


    Wenn du etwas mehr(fertigeres) haben möchtest schau dir unbedingt mal fhem oder eines der anderen Heimautomatisierungs Tools an. Das hast du dann auch gleich eine schöne Oberfläche über die sich die ganzen Sensoren verwalten lassen.


    Ich hab gestern mal angefangen mich ein bischen in fhem einzulesen und bin davon total begeistert. Es bieten sich gleich so viele (praktische) Möglichkeiten. Auch das integrieren einer meiner Sensoren hat auf anhieb geklappt. :)


    MQTT steht auch schon länger auf meiner TODO Liste. Das liest sich nämlich richtig interessant. :)

    Und, reichts? :)
    Ich wohne im im Erdgeschoss, da ist es zum Briefkasten nicht soo weit.


    Uhrzeit+Datum sind integriert. Hier der Link zur angepassten Version: (Jetzt weiß ich auch wie das mit den branches funktioniert. :) )
    https://github.com/8n1/ESP8266…Sensor/tree/date-time_mod


    Zu erklären gibt es eigentlich nicht viel.
    Du musst einfach nur alle Luaskripte bei denen "date-time mode" dabei steht (insgesamt 5 EDIT: 6) nochmal neu hochladen und kompilieren. Davor wieder die config.lua und pushingbox_request.lua anpassen.


    Was für Variablen dazu gekommen sind steht am Anfang der pushingbox_scenario.lua.


    Der Server von dem die Zeit geholt wird muss ein Webserver sein, darf also bspw. kein NTP Server sein (über NTP dauerte es mit den verschiedenen Beispielen die ich getestet hab viel zu lange)
    Winter und Sommerzeit werden nicht berücksichtigt.

    Hab grad mal wegen dem µisp geschaut. Der müsste sich schon über die IDE nutzen lassen. Die Arduino IDE macht auch nichts anderes wie avrdude aufzurufen.
    Stell mal bei Programmer "USBtinyISP" ein und versuchs mal so.


    Wie jetzt. Wenn du die Zeilen im ESPlorer testest wird das richtige angezeigt und sonst nicht?


    Ich hatte damit eigentlich noch keine Probleme. Hab aber noch nicht allzu viel tests bezüglich der Reichweite gemacht.
    Bei meinen Sensoren hab ich das auch nur am Anfang testweise aktiviert. Als ich gesehen habe wie gut der Empfang ist hab ich es wieder deaktiviert.
    Hab mir überlegt das über einen Jumper aktivier bzw. deaktivierbar zu machen.


    Hier mal wie das mit der Signalstärke einer meiner Sensoren im test aussah:



    Ich teste das mit der Uhrzeit bis Morgen mal selber und schreibe das kurz zusammen.

    Hey bird,


    Das Board sieht ja super aus. Gut gemacht. :thumbs1:
    Modifikationen usw. sind natürlich gerne gesehen! Ich hab hier extra alle möglichen Erweiterungen weggelassen damit man das ganze leichter nachvollziehen kann. Dran bauen ist ja immer einfacher. ;)


    Freut mich dass du es auch so schnell zum laufen gebracht hast und meine Anleitung brauchbar ist.


    Das Problem mit GPIO4 und GPIO5 ist ja bekannt, ich werd im Schaltplan aber nochmal explizit darauf hinweisen.


    Der LTC ist eigentlich ziehmlich genial. Allerdings bleiben seine Stärken(Sehr hohe Eingangsspannung, Geringer Eigenverbrauch im aktiven Zustand) bei diesem Projekt komplett ungenutzt.
    Der Pin heißt übrigens nicht Sensor Pin sondern "Sense" Pin. :)


    Was hast du denn für ein Programmiergerät dass du die .hex brauchst? Geht das nicht auch über die Arduino IDE direkt?


    Was ich noch vergessen habe zu erwähnen ist dass für die Spannungsmessung Präzisions Widerstände verbaut werden sollten da die gemossene Spannung unter den verschiedenen Bedingungen(Temperatur) sonst zu stark verfälscht wird.


    Die interne Referenzspsannung lässt sich recht einfach mit einem 10K Poti + Multimeter ermitteln. Einfach ein paar Zeilen Code die nichts weiter machen wie den ADC Wert bspw. alle 100ms über den UART auszugeben auf den ESP ladaen und am Poti so lange drehen bis der ADC Wert zwischen 1023 und 1024 schwankt. Anschließend die am ADC Pin (Poti Schleifer) anliegende Spannung mit dem Multimeter messen und schon hat man die Referenz Spannung. Mit einem größeren Poti (mehr Ohm) klappt das ganze zumindest mit meinem Multimeter nicht da es dann beim anlegen immer den im Terminal ngezeigten Wert verfälscht hat.


    Das mit der Wlan Signalstärke sollte eigentlich schon funktionieren. Habs zur sicherheit grad nochmal mit Pushingbox getestet.
    Ausser nochmal die Schreibweise der Variable ($rssi$) zu prüfen fällt mir da jetzt auch nichts ein.
    Du könntest sonst aber mal folgende Zeilen im ESPlorer testen: (Es muss nur die SSID angepasst werden)


    Auf Datum und Uhrzeit hab ich hier der einfachheit halber bewusst verzichten. Ausserdem wäre das hauptsächlich für Pushingbox interessant. Bei IFTTT kann man Uhrzeit und Datum bspw. generell auch so einbauen lassen.
    Ich schreib dir aber gerne eine kurze Anleitung wie sich das ganze um diese Funktion erweitern lässt.

    Schau dir mal PartDB an:
    https://www.mikrocontroller.ne…t-DB_RW_-_Lagerverwaltung
    Ist in PHP geschrieben und steht bis auf das Javascript Menü(was Bierware ist) unter der GPL.
    Hab das zwar mal vor einiger Zeit auf meinem Pi eingerichtet, bin aber noch nicht wirklich zum füllen gekommen.


    Ganz unten wird unter anderem noch ein weiteres ähnliches Projekte erwähnt:
    PartKeeper: https://www.partkeepr.org/ (https://github.com/partkeepr/PartKeepr)

    Es ist definitiv das Zeilenende was probleme macht.
    Wenn man nachdem der Befehl mit Enter abgesetzt wurde zusätzlich noch Strg+Enter oder Strg+J drück klappt es.


    Eine passende Einstellung hab ich in minicom leider auch nicht gefunden. Man kann zwar linefeed und Carriage return aktivieren, bringen tut es aber nix. Vermutlich weil es in der falschen reihenfolge gesendet wird(LF+CR).


    Mit picocom klappt es so:
    picocom /dev/ttyUSB0 -b115200 --omap crcrlf



    Firmware ist definitiv schon drauf sonst würde sich das Modul nicht mit einem "ready" melden.
    Bisher hatten alle Module die ich gekauft hatte standardmäßig die AT-Firmware drauf.


    Anstatt GND abzuziehen häng besser einen Taster an den Reset Pin (Rst->GND). Den wirst du bestimmt noch öfter brauchen. :)

    Das hört sich so an als ob das Skript von einem anderen Benutzer (bspw. root) ausgeführt wird als von dem der den Client eingerichtet hat (pi).
    Wie führst du das Skript aus?


    Das kann zwar nicht der Grund sein aber im Skript fehlt in der ersten Zeile ein "!/".

    Bash
    #!/bin/bash

    Ich habs selber nicht getestet aber das scheint doch recht einfach möglich zu sein:


    Über den ersten Link findet man auch gleich ein paar schöne Code Beispiele: (Ich geh jetzt einfach mal von Python als bevorzugte Programmiersprache aus)
    https://github.com/xbmc/xbmc/b…/python/example_simple.py


    Einfach um die Abfrage der GPIOs (per Interrupt) erweitern, Taster anschließen und fertig. Oder so. :)

    Starte die test.sh am besten nicht direkt sondern leg dafür eine .desktop Datei und starte sie dann darüber.


    So eine .desktop könnte im einfachsten Fall so aussehen:

    Code
    [Desktop Entry]
    Type=Application
    Name=Test Proggi
    Exec=/home/pi/test.sh
    Terminal=true


    Einfach in einer Datei die auf .desktop endet speichern(bspw. test.desktop)


    Wenn du nicht willst das die Konsole beim Ausführen angezeigt wird kannst du die Option "Terminal" auf false setzen ("Terminal=false")


    Schau auch mal hier rein: (Oder such bei google nach ".desktop" bzw. ".desktop lxde")
    Dort erfährst du unter anderem auch wie man der .desktop ein eigenes Icon verpassen kann..
    http://kellerleiche.bplaced.net/PCLinuxO...age10.html
    http://wiki.ubuntuusers.de/.desktop-Dateien
    https://lkubaski.wordpress.com/2012/06/2...shortcuts/


    Alternativ kannst du auch im nautilus unter Einstellungen die Abfrage abschalten. Gillt dann aber generell für alle ausführbaren Dateien und funktioniert nur im nautilus.

    Hab gesehen dass du auch einen LiPo einsetzen willst. Da man den ja nicht unter 3.3V leer werden lassen sollte ist zumindest theoretisch bis zum Ende "luft" für 300mV Dropout. Wäre also mit beiden Reglern kein Problem. Die Dropout Sannung ist eher interessant wenn man bspw 3xAA Batterien so leer wie möglich bekommen möchte. (Wobei man sich da dann komplett ausserhalb der spezi. Versorgungsspannung von 3.0 - 3.6V bewegt)
    Die von dir rausgesuchten Werten gelten übrigens nur für 25°C. - In meinem Briefkasten hat es im Moment um die -2° :)


    Wenn 1-2 stück zum testen reichen könntest du beim Hersteller nach Samples fragen. Sonst bleibt eigentlich nur Mouser und Digikey. Beim ersten bekommt man aber 10 Stück schon für 12€ und ab 50€ gibt es sogar gratis Versand.

    meigrafd Solar wär schon cool :D . Kann man so pauschal aber sicher nicht sagen. Kommt halt darauf an wie viel Licht schlussendlich durchschnittlich zum Fenster bzw. der Solarzelle kommt und wie oft der Sensor aktiv ist.
    Müsste man mal testen. :) Was ich aber bspw. hier so gelesene hab, besser mit NiMH als Lipo.



    petit_miner
    Hatte zuerst auch bedenken geht aber ganz gut. Eigentlich sogar viel besser als ich zuerst dachte. Ok, ich löte auch schon eine ganze weile, allerdings bis zu meinen Breakout Adaptern haupsächlich nicht SMD auf Lochraster.


    Also ich hab mir bisher 2 von den Sensoren gebaut.
    - Der erste sendet den Status einfach nur zum Pi wo er erstmal in einer Datenbank gespeichert wird. Wie ich das ganz am besten auswerten und weiterverarbeiten hab ich mir noch nicht genauer überlegt.
    - Der zweite schickt mir direkt über Pushingbox eine Pushnachricht aufs Smartphone.


    "Ernstfall" hört sich so Lebensbedrohlich an.
    Ich sollte vielleicht noch deutlich darauf hinweisen dass das Projekt keinesfalls eine professionelle Alarmanlage ersetzt und eigentlich nur ein kleines Hobby Projekt ist.


    Ich hätte aber schon vorgehabt das ganze noch weiter zu optimieren und verbessern und mit einem Rückkanal sogar noch auf die Spitze zu treiben. ;)
    Um wirklich sicher gehen zu können dass der Empfänger die Nachricht erhalten hat muss er dem Sensor den empfang ja quasi irgendwie bestätigen.
    Der Sensor sollte es im idealfall also so lange versuchen bis er entweder über den Rückkanal abgestellt wird oder die Batterien leer gehen.