hat sich erledigt war nur zu doof
Posts by ghoethe
-
-
Bin grad auch dabei diese Variante auszuprobieren. Bis zum erstellen der XML Dateien bin ich gekommen. Aber wie macht man das dann mit dem highchart script?
Einfach die XML Dateien auf den Webserver schieben und das Script in ne php/HTML Seite einbinden? Wenn ja wie?Mfg Christoph
-
hab den DHT22 (bei mir GPIO 22) dann doch zusammen mit dem DS18B20 (Gpio4) zum laufen bekommen
Erfassung und Auswertung alles in einer Tabelle / Grafik
Die von mir angepassten "avrio-dateien" zur Auswertung aktualisiere ich die Tage noch.
Das is ne alte Gartenanlage wo das Gewächshaus steht. Aber wenns mit ner kleinen Batterie auch geht, er soll ja dann nur 1 oder 2 mal ne Mail/sms schicken können damit man bescheid weis.
-
Hab die DS18B20 auf GPIO 4 und den DHT22 jetzt auf GPIO 25, damit klappt es bei mir. vielleicht hilft es dir ja
-
update mit meinen angepassten files siehe ersten post
-
naja.. das is kein "SERVER" für 100euro /monat, sondern eher so webspace mit datenbanken, subdomains etc für nur 10eur/monat
-
ich bin der hier: Fernüberwachung-Gewächshaus
Der PI steht im Garten... >6km von der Wohnung entfernt
- zeichnet Temp-Werte in mySQL Datenbank auf
- schreibt die Werte zusätzlich auf nen google-spreadsheet (per UMTS-Verbindung)
- läd nen backup der Datenbank alle paar Stunden auf nen externen Webserver (per UMTS-Verbindung)WEIL
von aussen ist der PI ja nicht erreichbar mit UMTS-Anbindung
DESHALB
2. Webseite auf externen Server, wenn diese aufgerufen wird spielt sich automatisch des letzte Backup drauf und man kann nen schönen Graphen wie bei Ihm sehn
-
ja das is echt doof wenn man kein buisness vertrag hat, oder VPN zugang.
habs über umwege gelöst
mein plan war eigentlich:
Pi+Mysql(Webserver)+umts-stick + NO-IP um darmit von der aussenwelt drauf zuzugreifen
JETZT
2x täglich backup vom PI auf externen server per FTP-Upload, und dort automatisches Einspielen des Backups
-----------------------
ist zwar nicht elegant, aber erfüllt seinen zweck
trotzdem vielen dank!
-
jut, dann geht das wirklich nicht und nicht das ich mich nur zu dumm angestellt hab
-
bin grade auf nen doofes problem gestoßen:
wenn man mit nem UMTS stick online ist aufm dem raspberry, dann kann er zwar daten senden, temperatur warnungen schicken und die datenbank befüllen. aber der webserver ist von aussen leider nicht erreichbar, trotz "no-ip", aber auch mit der reinen IP adresse gehts nicht
hat das jemand schonmal probiert, hinter nem UMTS stick nen webserver zu betreiben?
mit nem normalen router wo der raspberry drann hängt klappt es. aber mit dem TP-Link MR3020 und portforwarding gehts nicht.
mfg Christoph
-
Hi,
Du hast geschrieben das bei dir sakis3g läuft.Bei mir kommt: erfror by checking Pin. Wie hast du die SIM Pin Abfrage umgangen oder wo kann man die Einträgen ?
MfG Christoph
-
Echt schöne Variante!
Aber wie kann man den scope anpassen? Hab schon gegoogelt, komme aber zu keinem zufriedenstellendem Ergebnis
Also zum Beispiel die letzten 3 Stunden oder so
MfG ghoethe
-
Oben bei Import nicht richtig kopiert
[hr]
Kann den Code morgen nochmal hier posten, bin grad auf ArbeitPython
Display More#!/usr/bin/python import os import sys import smtplib from email.mime.text import MIMEText verbose_level = 2 debug_level = 0 error_temp = -999 # dictionary with for 1-wire sensors: [sensor name] [1-Wire device] sensor_dict = { 'VornOben':'28-000004c4dfe0', 'VornUnten':'28-000004e0a730', 'HintenOben':'28-000004e0b498', 'HintenUnten':'28-000004e10f1c', 'Erde':'28-000004e0f4c2' } #--------------------------------------------------------------------------------------------- def read_sensor(Sensor): if verbose_level > 2: print "1++++ read_sensor()" print "sensor:" , Sensor if debug_level == 0: # get 1-Wire id from dictionary sensor_slave = str(sensor_dict.get(Sensor)) # Open 1-wire slave file sensor_device = '/sys/bus/w1/devices/' + str(sensor_slave) + '/w1_slave' if verbose_level > 2: print "open: ", sensor_device try: file = open(sensor_device) filecontent = file.read() # Read content from 1-wire slave file file.close() # Close 1-wire slave file stringvalue = filecontent.split("\n")[1].split(" ")[9] # Extract temperature string if stringvalue[0].find("YES") > 0: temp = error_temp else: temp = float(stringvalue[2:]) / 1000 # Convert temperature value # temp=str(temp) except IOError: print "PANIC read_sensor - Cannot find file >" + sensor_slave + "< in /sys/bus/w1/devices/" print "No sensor attached" print "check with > cat /sys/devices/w1_bus_master1/w1_master_slaves" temp=("Sensor not attached") return(temp) # exit function read_sensor #--------------------------------------------------------------------------------------------- def control_sensor(Sensor,alarm_hi,alarm_lo): cur_temp = read_sensor(Sensor) print "Aktuelle Temperatur:", cur_temp, "/ Alarm High:", alarm_hi, "/ Alarm Low:", alarm_lo if cur_temp == error_temp: print "read error - CRC = NO" else: if (cur_temp > alarm_hi) or (cur_temp < alarm_lo): emailtext = "Sensor:" + Sensor + " / Temperatur ist: " + str(cur_temp) + " Grad Celsius" msg = MIMEText(emailtext) msg['Subject'] = 'Temperatur Alarm' msg['From'] = 'empfänger-mail' #msg['From'] = mail_from msg['To'] = 'empfänger-mail' #msg['To'] = mail_to s = smtplib.SMTP('smtp.gmail.com:587') #s = smtplib.SMTP(mail_smtp) s.starttls() s.login('absender-mail','password') #s.login(mail_from,mail_from_pass) s.sendmail('empfänger-mail',['empfänger-mail'], msg.as_string()) #s.sendmail(mail_to,[mail_to], msg.as_string()) s.quit() else: print "o.k." return; # exit function control_sensor #--------------------------------------------------------------------------------------------- if __name__ == "__main__": ### /etc/profile Umgebungsvariable festlegen mail_from = os.getenv("MAIL-FROM") mail_from_pass = os.getenv("MAIL-FROM-PASS") mail_to = os.getenv("MAIL-TO") mail_smtp = os.getenv("MAIL-SMTP") ### Sensor Kontrollfunktion für jeden aufrufen 1. Parameter = Alarm Höchstwert 2. Parameter = Alarm Niedrigwert control_sensor("VornOben",25.0,4.0) control_sensor("VornUnten",25.0,4.0) control_sensor("HintenOben",25.0,4.0) control_sensor("HintenUnten",25.0,4.0) control_sensor("Erde",25.0,4.0) sys.exit(0)
-
weil er web.de und ich google nutze, und google über nen aderen port geht, deshalb hab ich versucht das zu kombinieren, jetzt klappts
-
also wenn ich das mit den Einrückungen mache bekomme ich jetzt folgendes:
Code
Display More27.25 20.5 -10.5 Traceback (most recent call last): File "alarm2.py", line 89, in <module> body = email.mime.Text.MIMEText(cur_temp) File "/usr/lib/python2.7/email/mime/text.py", line 30, in __init__ self.set_payload(_text, _charset) File "/usr/lib/python2.7/email/message.py", line 226, in set_payload self.set_charset(charset) File "/usr/lib/python2.7/email/message.py", line 268, in set_charset cte(self) File "/usr/lib/python2.7/email/encoders.py", line 73, in encode_7or8bit orig.encode('ascii') AttributeError: 'float' object has no attribute 'encode'
heißt das, das python nicht richtig installiert is bzw. andere variable erwartet?
-
Danke, hatte vorher noch gedacht: wenn ich das einstelle drauf zu achten das pw nich da steht...
Guter tip, heut Abend mal ausprobieren. Wusste nicht das Python sich an Einrückungen hält.
Muss dann auch die Leerzeile weg und nen zweites Else noch dazu? -
Hier mein zusammengestückelter code, geht leider nicht zusammen
im letzten abschnitt soll er bei : [font="Monaco"] if (cur_temp > alarm_hi) or (cur_temp < alarm_lo):[/font]
[font="Monaco"]die mail abschicken, mit Textinhalt cur_temp[/font][font="Monaco"]klappt net und er meint ab: msg = .. --> IndentatioError: expected an indented block[/font]
[font="Monaco"]Wenn ich jedoch an dieser stelle nen extra python file aufrufe mit inhalt senden[/font]
[font="Monaco"]script2run = "/home/pi/temp-alarm/send.py"
execfile( script2run )
[/font][font="Monaco"]klappt es, aber nur statisch. ich möchte in der mail auch gerne die aktuelle Temperatur als text haben.[/font]
Python
Display More#!/usr/bin/python # -*- coding: utf-8 -*- # # read 1-wire sensor # in case of value exceeding alarm limit # send email via smtp # 2013-06-06 V0.1 by Thomas Hoeser # import sys import smtplib # For guessing MIME type import mimetypes # Import the email modules we'll need import email import email.mime.application verbose_level = 2 debug_level = 0 error_temp = -999 # dictionary with for 1-wire sensors: [sensor name] [1-Wire device] sensor_dict = { "Wohnzimmer": "28-00000487bb70", "Balkon" : "28-00000487bb70", "Speicher" : "28-000004be39a5" } #--------------------------------------------------------------------------------------------- def read_sensor(Sensor): if verbose_level > 2: print "1++++ read_sensor()" print "sensor:" , Sensor if debug_level == 0: # get 1-Wire id from dictionary sensor_slave = Sensor # Open 1-wire slave file sensor_device = '/sys/bus/w1/devices/28-000004c4dfe0/w1_slave' if verbose_level > 2: print "open: ", sensor_device try: file = open(sensor_device) filecontent = file.read() # Read content from 1-wire slave file file.close() # Close 1-wire slave file stringvalue = filecontent.split("\n")[1].split(" ")[9] # Extract temperature string if stringvalue[0].find("YES") > 0: temp = error_temp else: temp = float(stringvalue[2:]) / 1000 # Convert temperature value # temp=str(temp) except IOError: print "PANIC read_sensor - Cannot find file >" + sensor_slave + "< in /sys/bus/w1/devices/" print "No sensor attached" print "check with > cat /sys/devices/w1_bus_master1/w1_master_slaves" temp"Sensor not attached") #else: # this is dummy function generating a random number # ony used for testing purposes #temp = random.randrange(-10, 30, 2) + 0.3 # temp = Sensor + " " + str(temp) return(temp) # exit function read_sensor #--------------------------------------------------------------------------------------------- if __name__ == "__main__": alarm_hi = 20.5 # upper alarm level alarm_lo = -10.5 # lowe alarm level cur_temp = read_sensor("Speicher") print cur_temp, alarm_hi, alarm_lo if cur_temp == error_temp: print "read error - CRC = NO" else: if (cur_temp > alarm_hi) or (cur_temp < alarm_lo): msg = email.mime.Multipart.MIMEMultipart() msg['Subject'] = 'Temperatur Alarm' msg['From'] = 'Absender' msg['To'] = 'empfanger' # The main body is just another attachment body = email.mime.Text.MIMEText(cur_temp) msg.attach(body) # send via Gmail server # NOTE: my ISP, Centurylink, seems to be automatically rewriting # port 25 packets to be port 587 and it is trashing port 587 packets. # So, I use the default port 25, but I authenticate. s = smtplib.SMTP('smtp.gmail.com:587') s.starttls() s.login('Absender','Passwort') s.sendmail('Empfänger',['empfanger'], msg.as_string()) s.quit() else: print "o.k." sys.exit(0)
ich hoffe ihr könnt mir weiterhelfen?
mfg Ghoethe
-
Ja, hab ich gesehen, aber jedes Projekt ist individuell und ich muss das ja auch erstmal zum funktionieren bringen. Hab zwar keine linken Hände, aber dafür zwei Linke Knoten im Gehirn manchmal
-
Kleiner feiner PHP Code für den Export der MySQL Daten ins csv Format:
Nen bissel angepasst an die eigene dB und als link kann man sich dann die Datei runterladen lassen, automatisiert per FTP oder Mail folgt wenn ich was funktionierendes finde
-
Auf deinem Bild: der ganz rechte Pin geht eigentlich zu 3,3v
Schau mal hier: