Danke für eure Anregungen, hab ja auch schon über eine Hardwarelösung nachgedacht - ähnlich wie ihr beide - vielleicht mit irgendeinem 2 Euro SoC und dem Reset Pin - aber eigentlich scheint mir das zu aufwändig für sowas. Eine reine Softwarelösung scheint es nicht zu geben.
Ich hab jetzt die maximale Batterielaufzeit ausgetestet und stelle den Shutdown Timer einige Minuten kürzer ein. Wenn der Strom genau innerhalb dieser paar Minuten zwischen Shutdown und USV-Off wiederkommen sollte, hab ich halt Pech gehabt und muss den Raspi händisch booten. Die Wahrscheinlichkeit ist aber gering - damit kann ich leben...
Posts by m55
-
-
[font="Trebuchet MS"]Danke mal für eure Antworten.[/font]
[font="Trebuchet MS"]Also es handelt sich um einen PI 2/B, ein Qnap TS-251 und die USV Cyberpower UT700E. Die USV hab ich per USB mit dem Qnap verbunden und wurde sofort erkannt. In der Qnap GUI gibt es eine recht einfache Konfiguration für USVs. Man bestimmt einen Zeitraum wielange das NAS bei Stromausfall wartet und hat die Wahl zwischen "abschalten" oder "Protected Mode" (=alle Dienste stoppen und alle Volumes auswerfen). Ausserdem kann man bis zu 6 IP-Adressen angeben, die bei einem Ausfall benachrichtigt werden. (alles wird unter der Motorhaube von nut unter cgi-bin bereitgestellt).
[/font]
[font="Trebuchet MS"]Am PI hab ich nut installiert und als Slave (Monitor) konfiguriert. Dazu mußte ich nur in die /etc/nut/upsmon.conf diese Zeile editieren:[/font]
[font="Trebuchet MS"][font="Courier New"]MONITOR qnapups@10.0.0.2 1 user passwort slave[/font]
qnapups ist der Name der USV, 10.0.0.2 die IP des NAS und user/passwort die NAS-Benutzerdaten.
Der Trick dabei war eigentlich nur, den vorgegebenen USV-Namen zu finden, ab da lief schon alles von selber.
Am PI kann man Connection und Status der USV mit[font="Courier New"] sudo upsc qnapups@10.0.0.2 [/font]überprüfen.
(Prinzipiell könnte man auch umgekehrt den PI als Master und das NAS als Slave fahren.)Wenn nun der Strom weg ist, wird der PI benachrichtigt und gibt schon mal eine Message an die Konsole aus.
Nach den eingestellten x Minuten fährt das NAS in den Protected Mode. Der PI pollt das NAS alle 10 Sekunden und wenn er keine Antwort mehr bekommt, führt er nach einer geringen Wartezeit den in der upsmon.conf konfigurierten Shutdownbefehl aus.
[/font]
[font="Trebuchet MS"]Nach dem Stromausfall startet der PI natürlich nur, wenn die USV leer war, und er wieder Strom bekommt. [/font]
[font="Trebuchet MS"]Überlebt aber die USV Batterie bis zum Ende des Ausfalls, kriegt er ja nichts mit und bleibt aus.[/font]
[font="Trebuchet MS"]Das NAS löst das Dilemma durch den Protected Mode, in dem der plötzliche Stromentzug kein Problem ist. Ich habe keine Ahnung wie das Booten genau funzt, ich nehme aber an, dass das BIOS in der Lage sein muss, eine entsprechende Statusmeldung der USV zu empfangen.[/font][font="Trebuchet MS"]Inzwischen hab ich noch etwas weiter gedacht: Prinzipiell wäre auch am PI ein "Protected Mode" möglich, nämlich ein Shellscript zu basteln, welches alles Dienste stoppt und Volumes aushängt. Die Shutdown Konfiguration inder upsmon.conf würde dann statt dem shutdown das Script aufrufen. Der PI läuft weiter bis der Strom ausfällt. Wenn aber die Batterie den Ausfall überlebt, müsste er rebooten, wenn die USV wieder Strom bekommt - aber wie sag ichs ihm, wenn alle Dienste tot sind
[/font][font="Trebuchet MS"]Ich versuche jetzt mal den maximalen Wartezeitraum zu ermitteln, weil dadurch die Wahrscheinlichkeit, dass der Strom vor der Batterielaufzeit wieder kommt, geringer wird. Allerdings ist es halt auch nicht so schön, wenn die Batterie jedesmal leergefahren wird.[/font]
-
Hallo!
Nach einigen Stromausfällen heuer hab ich mir eine USV (Cyberpower UT700) geleistet um meinen PI nebst Qnap NAS, Router und Switch zu versorgen. Das NAS dient dabei als nut-master und der PI als Slave. Funktioniert auch alles wie es soll - ausser:
Im Fall eines kürzeren Stromausfalls fährt der Pi nach 5 Min. zwar brav herunter, aber nicht mehr hoch, wenn die Netzspannung wieder da ist, bevor die Batterie leer ist bzw. die USV ganz abschaltet. Die USV hat die ganze Zeit Strom geliefert und der PI bekommt gar nichts mit. Der Pi bootet nur wenn die Spannung auch wirklich mal weg war.Leider hab ich auch bei Dr. Google nichts brauchbares gefunden und wäre sehr dankbar für jeden Lösungsvorschlag.
-
Also im Datenblatt für den SHT21 steht unter 6.1 und 6.2: "Temperature/Humidity Conversion - The temperature T is calculated by inserting temperature
signal output ST into the following formula (result in °C), no matter which resolution is chosen.temp = -46.85 + 175.72 / 65536 * ST
hum = -6 +125 / 65536 * STDiese Gleichungen findet man auch im Datenblatt für den SI7021/HTU21D-F. Dort steht dann noch:
....Ok, langsam glaube ich kommt Licht in die Sache, ich fasse mal zusammen:
Wir haben also 3 verschiedene SHT21-kompatible Sensoren.
SHT21 (Schutzabdeckung extra, Bauteil eindeutig beschriftet)
SI7021 (ggf mit Schutzabdeckung rechteckig mit abgeflachter Ecke)
HTU21 (ggf mit Schutzabdeckung rechteckig)
Was auf den Breakoutboards steht muss nicht unbedingt stimmen, gibt diverse/seltsame Varianten!
Eigentlich sollten alle mit der HTU21 Adafruit Lib laufen, das wäre noch zu testen....
- Die oben zitierten Formeln betreffen die Konvertierung, heisst die Umrechnung der Rohdaten in einer gegebenen Wortbreite/Auflösung in Grad C bzw % rel Feuchte. Alle Sensoren liefern 16bit breite Werte unabhängig von der Auflösung.
Mit der SHT1x-Lib im Kompatibilitätsmodus muss allerdings die entsprechende Bitbreite in der Formel berücksichtigt werden!
(Wie das für den HTU21 ist, ist noch offen)- Eine anschließende Temperatur-Kompensation der rel. Feuchte ist bei HTU21 (und bei den älteren SHT1x) erforderlich.
Das geht sowohl aus den jeweiligen Datenblättern und auch aus den Libraries hervor.
Bei SI7021 und SHT21 steht weder im Datasheet noch in den Libraries (für "echtes" i2c) etwas bezgl. Kompensation, deshalb ist anzunehmen, dass die Werte schon intern kompensiert werden.- Fragt sich noch, ob der SHT21 im Betrieb mit der SHT1x-Lib (im "Kompatibilitätsmode") auch kompensiert werden muss.
Nehme das aber fast an - kompatibel sollte heissen neuer Sensor läuft mit alter Software ohne Änderung, also mit Kompensation. Es wird ja auch im Kompatibilitätsmodus eine andere Adresse angesprochen.
Im SHT1x Modus ist zudem die Anpassung an die Wortbreite/Auflösung nötig, deshalb gibt es in der SHT1x-Lib auch 2 Koeffizienten T1 und T2.
(Die Kompensation dürfte auch abhängig von der Versorgungsspannung sein, da die Koeffizienten @5V angegeben werden.)Beste Grüße
m55 -
Hallo m55,auf dem Sensor steht jedenfalls SHT21 und
ich benutze Deine modifizierte SHT1x lib.Gruss
rpi1950Interessant, laut Foto sind dein und mein SHT21 eindeutig verschiedene Sensoren, ich hab ein Bild weiter vorne gepostet, schau dir das mal an, gekauft hab ich bei http://shop.emsystech.de/themes/kategor…e=1&refertype=9
Ich hab den Verdacht, dass wir zusammen mit luetzels Sensor jetzt drei verschiedene Sensoren haben, die
"Sht21-kompatibel" sind, sich aber in Details unterscheiden...Trotzdem, ich würde mal versuchen in der SHT1x.cpp in beiden Funktionen readTemperatur und readHumidity die Conversion-Formel zu ändern, so wie es im Datenblatt zum HTU21 angegeben ist.

Alternativ könntest du die Adafruit Library probieren, die luetzel benützt - siehe oben.
Beste Grüße
m55 -
Hallo luetzel,der Sensor ist ein SHT21D
Gruss
rpi1950nach deinem Bild sieht das ja eher wie ein SI7021 aus, die Unterseite ist jedenfalls so wie luetzels.
Dein Problem könnte auch mit der Umrechnung der RohdateN zu tun haben, und zwar mit der Wortbreite.
Welche Library verwendest du denn?
In der von mir modifizierten SHT1x.cpp gibts die Formel_temperature = (-46.85 + 175.72 / 16384.0 * (float)(_val));
wobei _val der empfangene Rohwert ist und 16384 die Wortbreite in meinem Fall also 2hoch14 ist.
Bei 16bit müßte da entsprechend 65536 stehen.beste Grüße
m55
Automatisch zusammengefügt:
Ich habe bei der Suche nach den Libraries gelesen, dass die negativen Werte immer dann erzeugt werden, wenn bei der Sensorabfrage die Kommunikation
fehlschlägt. Das betrifft sowohl die Temperatur, als auch die Feuchtigkeit. Ich bin auch gerade dabei und ändere den Sketch, damit diese Werte nicht vom
TinyTX übertragen werden.Über die Heizung habe ich auch gelesen, aber das ist in der Adafruit-Library leider nicht implementiert. Ich muss mir mal anschauen wie das genau funktioniert ...
Im Moment bin ich über die 'Temperature Coefficient Compensation' gestolpert.
RHcompensated = RHactualT + (25 - Tactual) * CoeffTemp
Mit der Korrektur soll die angegebene Genauigkeit erreicht werden, nur finde ich nirgends den Korrekturfaktor 'CoeffTemp' dokumentiert :s
Muss man den erst durch Kalibrierung herausfinden? Stehe grad auf dem Schlauch, ob der überhaupt notwendig ist ...Ob man das überhaupt braucht, das war ja meine Frage vor kurzem....
Im Datasheet zum SHT21 steht:
The physical value RH given above corresponds to the relative humidity above liquid water according to World Meteorological Organization (WMO). For relative humidity above ice RHi the values need to be transformed from relative humidity above water RHw at temperature t. The equation is given in the following, compare also Application Note “Introduction to Humidity”Diese Introduction - ichhatte noch nicht den Nerv mich da durch zu arbeiten, wahrscheinlich fehlt mir dazu auch der dazupassende doktortitel :s
https://www.sensirion.com/fileadmin/user…Humidity_V2.pdfBeste Grüße
m55 -
Display More
Uff, ja Du hast recht. Das Breakout-Board ist ja ziemlich verwirrend beschriftet- da stehen gleich drei Bezeichnungen drauf SHT21, HTU21 und SI7021.
Leider kann man ja die Beschriftung auf dem Bauteil nicht erkennen, weil auf meinem Sensor noch eine Membran klebt, die den Sensor schützen soll,
jedoch feuchtigkeitsdurchlässig ist. Das Board findet man auch noch unter der Bezeichnung GY-21 HTU-21 - bei den meisten Beschreibungen wird
von SHT21 Kompatibilität gesprochen, was ja auch funktioniert. Doof, dass der SHT1x Kompatibilitätsmodus fehlt ...Die Messwerte habe ich über den Tag beobachtet. Die Temperatur wird recht zuverlässig gemessen, die Feuchtemessung steigt manchmal aus,
so dass ein negativer Wert gesendet wird. Das muss ich im Sketch noch abfangen.Beste Grüße,
/luetzel
37Scheint dass die Chinesen die Bezeichnung nicht ganz so ernst nehmen...
Bei aliexpress gibts den SHT21 offenbar nur ohne Board:
http://de.aliexpress.com/item/Sht21-tem…1786691381.html
und teuer isser auch...Die negativen Feuchtewerte bringt meiner auch, und zwar immer genau den gleichen Wert,
in ganz unregelmässigen Abständen. Bin leider nicht draufgekommen warum, hab den Wert dann halt auch ganz unelegant abgefragt und bereinigt. Und gestern hat er mir 4 oder 5mal eine Temperatur von 41*C geschickt, seither aber wieder alles normal ...Ich hab gesehen dass deiner auch eine Heizung hätte, da sollte Betauung ja kein Thema mehr sein,
nur wie wirkt sich das auf die Temperaturmessung wohl aus
Beste Grüße
m55
Automatisch zusammengefügt:Display More
Moin m55,ich habe dieses SHT21 Modul, (siehe Anhang).
Der Sensor, SHT21, ist auf der Rückseite.
An einem TX3-Board mit 4,1 V bekomme ich nur
negative Werte für Temp und Feuchte. Die LED braucht einige
Sekunden, bis sie aufleuchtet, und bleibt dann an.
Gesendet wird weiterhin.
An einem UNO läuft es mit 5 V.Hast Du eine Idee?
Gruss
rpi1950Kann es sein, dass du 2 Pullupwiderstände zwischen Vcc -> Datapin und Vcc -> Clockpin brauchst - siehe luetzels posting weiter oben...
Beim Uno dürften die Pullups schon eingebaut sein.
Beste Grüße
m55 -
Tach'chen,ich hatte ja kürzlich berichtet, dass ich zur Temperatur/Feuchtemessung auf den Sensiron SHT21 umsteigen wollte, nach dem Hinweis von m55,
dass der DHT22 nicht betauungsresistent ist, d.h. für den Aussenbereich nicht geeignet.
Nach einiger Recherche habe ich dann dieses Breakoutboard gefunden:http://de.aliexpress.com/item/Industria…2346083214.html
[......]
Beste Grüße,/luetzel
Interessant - dein Sensor ist ein SI7021 - kein SHT21 - deshalb geht die SHT1x Lib nicht.
Im Datasheet SI7021 steht auch nichts von einem Kompatibilitätsmodus zu 1x Serie.
Zum Vergleich das Bild vom SHT21 - sieht auch anders aus...
Für die 2 Pullup Widerstände sind auf der Unterseite Lötpunkte vorgesehen und die 4 Löcher sind zum Aufstecken einer Schutzkappe.
Beste Grüße
m55 -
Ja, ich habe 2 Sender mit je einem DHT22 und SHT21 draussen mehrere Stunden zugleich gelogt. Die Temperaturen differierten um etwa 0.5 *C, die Feuchte um 1-2 Prozentpunkte.
Allerdings war die Temperatur in der Testphase annähernd um 20 *C. Da die Feuchte auch von der Temperatur abhängt, müßte man das aber bei sehr unterschiedlichen Tenperaturen bzw Feuchtgraden vergleichen.Sind die Sensoren in China soviel günstiger? Ich hab meinen bei emsystech.de gekauft, schon auf Breakout Board, musste nur noch zwei Pullup Widerstände auflöten - 13,90+Versand.
beste Grüße
m55 -
Quote
Oh wow, ein riesiges Dankeschön für das Teilen des Sketches. Meine Sensoren sind leider noch nicht vom 'Ali' angekommen - soviel Express war dann wohl doch nicht über die Feiertage. Sobald die Teile da sind, werde ich meine Sender umbauen.Nochmals danke!
Beste Grüße,
/luetzelWenn du soweit bist würde mich interessieren was du von der temperaturabhängigen Feuchtekorrektur in der cpp Datei hältst...
Für ältere Sensoren sicher obligat, der SHT21 dürfte das vielleicht intern schon korrigieren?
Ich hab die Feuchte auch auf 100% softwareseitig limitiert, da ich auch geringfügig höhere Werte als 100 erhielt.Jedenfalls läuft das Ding bei mir seit 3-4 Monaten sehr zufriedenstellend auch unter widrigen Bedingungen :thumbs1:

-
Display More
Tach'chen,
auch wenn Deine Antwort nun schon etwas länger zurück liegt: Ich wollte über Weihnachten das "SHT21 Projekt" in Angriff nehmen und meinen DHT22 ersetzten.
Hast Du den SHT21 an den TinyTX4 angeschlossen, und wenn ja, wie hast Du das "Problem" mit dem i2c gelöst?
Die dafür notwendigen Pins werden wie weiter oben im Thread beschrieben ja nicht herausgeführt, bzw. bereits vom RFM12B verwendet.
Grüsse,
/luetzel
Sorry für das Delay ....
wie schon mal erwähnt ist der SHT21 abwärtskompatiblel zu älteren Sensoren der Reihe SHT1x.
Hab im Netz eine Lib für SHT1x gefunden und diese angepasst.
Details zur Berechnung der Daten aus den raw-Werten im SHT11-Kompatibiltätsmode findest du im SHT21-Datasheet ganz am Ende.
War mir nicht ganz sicher ob ich die Luftfeuchte noch korrigieren muss - siehe readHumidit() im .cpp, erhalte aber ohne Korrektur sehr plausible Werte.
Das modifizierte Sketch liegt auch bei, DataPin und ClockPin sind bei mir 7 und 8.beste Grüße
m55 -
Nochmal die Frage in die Runde: Gibt's hier niemanden, der seine Sender/Empfänger mit eingelötetem ATTiny via Arduino als ISP programmiert? (Tja, falls nicht hat das vielleicht einen guten Grund...)Ich hatte vorerst auch Probleme mit invalide device signature, bekams dann aber hin.
Da schon länger her kann ich mich leider nicht mehr genau erinnern aber ich glaube es war die Datei boards.txt
(eine oder zwei Zeilen mit bootloader.tool und upload.tool ??)
Hier ist der attiny84 Abschnitt in meiner boards.txt, vergleich das mal mit deiner, vielleicht hilft das weiter, ansonsten sorry...###########################################################################
attiny84at8.name=ATtiny84 @ 8 MHz (internal oscillator; BOD disabled)
# The following do NOT work...
# attiny84at8.upload.using=avrispv2
# attiny84at8.upload.using=Pololu USB AVR Programmer# The following DO work (pick one)...
attiny84at8.upload.using=arduino:arduinoisp
# attiny84at8.upload.protocol=avrispv2
# attiny84at8.upload.using=pololuattiny84at8.upload.maximum_size=8192
# Default clock (slowly rising power; long delay to clock; 8 MHz internal)
# Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; [CKSEL=0010 SUT=10]; default value
# Brown-out detection disabled; [BODLEVEL=111]
# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0]attiny84at8.bootloader.low_fuses=0xE2
attiny84at8.bootloader.high_fuses=0xD7
attiny84at8.bootloader.extended_fuses=0xFF
attiny84at8.bootloader.path=empty
attiny84at8.bootloader.file=empty84at8.hex
attiny84at8.bootloader.tool=arduino:avrdudeattiny84at8.build.mcu=attiny84
attiny84at8.build.f_cpu=8000000L
attiny84at8.build.core=tinyattiny84at8.upload.tool=arduino:avrdude
########################################################################### -
Hallo Luetzel,
der Sensor ist einfach nicht betauungsresistent und somit im Aussenbereich ungeeignet, das ergaben jedenfalls meine Recherchen.
Ich habe meinen Aussensensor jetzt durch einen SHT21 mit Filterkappe ersetzt -
http://emsystech.de/produkte/feuchtigkeitssensor-sht21 - der funktioniert prima, zeigt allerdings bei voller Feuchte manchmal Werte über 100% - das steht auch im Datenblatt und muss ggf softwaremässig begrenzt werden.
Der SHT21 wird normalerweise per i2c angesprochen, ist allerdings abwärtskompatibel zum SHT11 bzw SHT15 - in dem Modus bekam ich dann ein lauffähiges Sketch hin.
(Es gibt übrigens noch mehrere Typen aus der SHT-Reihe, u.a. auch mit Heizung!) -
Hallo!
Ja interresse an der Software besteht!
:thumbs1:
Ich versuche schon länger vergeblich mir eine gut laufende Software zu schreiben die über Websockets läuft (auch Node.js). Bisher bin ich immer gescheitert die Daten im Hintergrund nachzuladen... =(
Du kannst dir die Software da holen:
https://drive.google.com/file/d/0BzAhcW…iew?usp=sharingEs gibt vier Seiten - ein Display mit den gerade aktuellen Daten, ein 2 Tage-Diagramm, ein 10 Tage-Diagramm mit Stundendurchschnitt und ein Allzeit Diagramm mit Tages-Min/Max. Die beiden ersten sind in Echtzeit mit Websockets, die anderen statisch.
Ist natürlich für meine speziellen Anforderungen geschrieben, d.h. du wirst das für dich anpassen müssen und alles was du nicht brauchst rauswerfen, zB Taupunktdifferenz usw...
Voraussetzung ist, dass Node.js am Raspy installiert ist, an Modulen brauchst du express, serialport, mysql, socket.io und swix - du kannst diese auch mit npm installieren - package.json liegt bei.
Es liegt auch ein sql File bei für die MySQL Tabellenstruktur, anders als meigrafd hab ich alle Daten in einer Tabelle sdata.
In die zweite Tabelle ddata werden täglich 0 Uhr per cron die Tagesmaxima und Minima geschrieben und der Tag älter 3 Monate in der Haupttabelle wird gelöscht. -
Die Idee mit dem Lüfter hatte ich auch schon, scheint mir aber "relativ" aufwändig/anfällig, ein alternativer Sensor wäre mir lieber.
Die Diagramme erzeuge ich mit dygraphs - http://dygraphs.com/ und die laufen in Echtzeit über Websocket. Die ganze Software ist mit Node.js programmiert - falls Interesse kann ich das gerne posten...
-

Hallo!
Meine Tinys mit DHT22 laufen jetzt brav seit ein paar Monaten, nur der Sensor Außen macht Probleme.
Bei hoher Luftfeuchte > 90% geht der Feuchtesensor auf Maximum (99,9%) und hängt dort stundenlang fest. Dann fällt er auf Minimum (1,4%) (siehe Screenshot leichter Regen von 17:45 - 18:30) oder er wechselt planlos zwischen Max und Min. Nach einigen Tagen normalisiert er sich wieder.
Der Sensor ist in einer guten Wetterhütte verbaut und bekommt auch bei starkem Regen kein direktes Wasser ab.
Nach Recherche sind das Kondensatprobleme, der DHT22 dürfte für den Außenbetrieb nicht wirklich geeignet sein, siehe auch http://www.mikrocontroller.net/topic/328251#4033866)Meine Frage: Hat jemand andere Sensoren (Temperatur + Feuchte) verbaut, die aussen besser funktionieren?
zB SHT21, BME280, ... beide sind I2C Sensoren, ist das mit dem ATtiny84 machbar? Der BMP085 is doch auch I2C, da gabs doch Probleme?Freu mich über jeden nützlichen Hinweis!!
-
habe am 30.1. per Formular 1 Empfänger + 2 Sender ohne Lötservice bestellt - würde die Platinen aber doch gerne fertig gelötet beziehen.
Soll ich ein neues Formular absenden oder reicht das so auch? Sorry für die Umstände...