Re: [vz-users] DHT11 - Scriptdatei
Hallo, ich bin auch eher für die Middleware als Schnittstelle, weiß aber auch das andere im Projekt das nicht so sehen. Argument beim Entwicklertreffen war das genau darin der Vorteil von SQL liegt, es geht einfach und kann fast jeder. Wobei trotzdem die Frage im Raum stand ob bei den aktuellen Entwicklungen im Bereich der DBs nicht vielleicht was dabei ist was zu unserer Anwendung besser passt. Sollte da wirklich was kommen macht das alle Scripte und Anwendungen unbrauchbar die nicht über die Middleware laufen. Am konkreten Beispiel stört mich das mit channel_id statt UUID gearbeitet wird. Dazu dann das die "Einstellwerte" (Pin auch) mitten im Code versteckt sind. Von daher hab ich vorbehalte das so ins Wiki zu übernehmen. Bei meinen Scripten gibts immer klare Deklaration zu Beginn, der Rest kann ignoriert werden (solange es tut), man muss den Code nicht verstehen um ihn anzuwenden. mfg Daniel
Re: [vz-users] DHT11 - Scriptdatei
Hallo Rupert. Funktion ist eines und das es nicht funktioniert meinte ich auch nicht. Aber wenn man ein Projekt plant hat man ein Konzept. Und das Konzept vom Volkszähler ist nunmal das man die Daten via middleware abliefert. Würden wir jetzt lauter Tools ins Wiki stellen die direkt die Daten via SQL abliefern.. wäre ein wenig Chaos oder? Grüße I Am Sa., 26. Jan. 2019 um 13:34 Uhr schrieb Rupert Schöttler < rupert.schoett...@gmx.de>: > Hallo Christian, > > Am 26.01.19 um 13:29 schrieb Christian S: > > Sollte man nicht eher die Daten abliefern via "middleware"? > > > M.E. funktionieren beide Wege gleich gut und sind daher > gleichberechtigt. Klar, wer direkt in die DB schreibt, muss wissen, was > er/sie tut. Die Middleware fängt viele Fehler ab. > > Auch das wäre Wiki-Einträge wert: Beispiel-Skripte, wie man mit den > vielen verschiedenen Sprachen die DB oder die Middleware anspricht. > Bisher ist das weit verteilt. > > Viele Grüße > > Rupert > > >
Re: [vz-users] DHT11 - Scriptdatei
Hallo Christian, Am 26.01.19 um 13:29 schrieb Christian S: > Sollte man nicht eher die Daten abliefern via "middleware"? M.E. funktionieren beide Wege gleich gut und sind daher gleichberechtigt. Klar, wer direkt in die DB schreibt, muss wissen, was er/sie tut. Die Middleware fängt viele Fehler ab. Auch das wäre Wiki-Einträge wert: Beispiel-Skripte, wie man mit den vielen verschiedenen Sprachen die DB oder die Middleware anspricht. Bisher ist das weit verteilt. Viele Grüße Rupert smime.p7s Description: S/MIME Cryptographic Signature
Re: [vz-users] DHT11 - Scriptdatei
Hallo. Sollte man nicht eher die Daten abliefern via "middleware"? Grüße Am Sa., 26. Jan. 2019 um 13:23 Uhr schrieb Rupert Schöttler < rupert.schoett...@gmx.de>: > Hallo Peer, > > Am 26.01.19 um 01:51 schrieb Peer Janssen: > > Hier nochmal das Script als Datei (in der Mail eben waren die > > Zeilenumbrüche unschön). > > > > Außerdem als Bonus noch ein Converter-Script für die alten Daten (als > > Beispiel), und ein Screenshot. > > > Danke, dass Du Deine Skript-Entwicklung hier teilst! Ich bin kein > Python-Kenner, aber sie sehen für mich sehr elegant und kompakt aus und > sollten daher meiner Meinung nach daher ins Wiki eingehen. Magst Du Dich > dort registrieren? Justin müsste Dir dann noch Schreibrecht geben, und > Du könntest z.B. unter Hardware -> Sensors einen DHT-Eintrag anlegen. > Von DHT22 hattest Du vorher ja "abgekupfert" :-) > > Nur eine Anmerkung: Sollte die Datenbank-Verbindung, die mit > MySQLdb.connect geöffnet wird, nicht zum Schluss auch geschlossen > werden? Ich hab' ja keine Ahnung, wie Python am Ende eines Skripts > tickt, aber wenn die Verbindung offen bleibt und jede Minute eine neue > geöffnet wird, könnte es irgendwann Probleme geben... > > Viele Grüße > > Rupert > > >
Re: [vz-users] DHT11 - Scriptdatei
Hallo Peer, Am 26.01.19 um 01:51 schrieb Peer Janssen: > Hier nochmal das Script als Datei (in der Mail eben waren die > Zeilenumbrüche unschön). > > Außerdem als Bonus noch ein Converter-Script für die alten Daten (als > Beispiel), und ein Screenshot. > Danke, dass Du Deine Skript-Entwicklung hier teilst! Ich bin kein Python-Kenner, aber sie sehen für mich sehr elegant und kompakt aus und sollten daher meiner Meinung nach daher ins Wiki eingehen. Magst Du Dich dort registrieren? Justin müsste Dir dann noch Schreibrecht geben, und Du könntest z.B. unter Hardware -> Sensors einen DHT-Eintrag anlegen. Von DHT22 hattest Du vorher ja "abgekupfert" :-) Nur eine Anmerkung: Sollte die Datenbank-Verbindung, die mit MySQLdb.connect geöffnet wird, nicht zum Schluss auch geschlossen werden? Ich hab' ja keine Ahnung, wie Python am Ende eines Skripts tickt, aber wenn die Verbindung offen bleibt und jede Minute eine neue geöffnet wird, könnte es irgendwann Probleme geben... Viele Grüße Rupert smime.p7s Description: S/MIME Cryptographic Signature
Re: [vz-users] DHT11 - Scriptdatei
Hier nochmal das Script als Datei (in der Mail eben waren die Zeilenumbrüche unschön). Außerdem als Bonus noch ein Converter-Script für die alten Daten (als Beispiel), und ein Screenshot. -- Peer Janssen - p...@pjk.de #!/usr/bin/python import time ts = time.time() timestamp = int(ts * 1000) import Adafruit_DHT sensor = Adafruit_DHT.DHT11 pin = 17 humidity, temperature = Adafruit_DHT.read_retry(sensor, pin) #TODO: #d=`date +%Y-%m-%d_%H:%M` #echo "$d [DHT11] $WERTE" >> /home/pi/dht11/dht11.log import MySQLdb db = MySQLdb.connect('localhost', 'vz-admin', 'secure', 'volkszaehler') c = db.cursor() if temperature is not None: channel_id = 2 c.execute('INSERT INTO data (channel_id, timestamp, value) VALUES (%s, %s, %s)', (channel_id, timestamp, temperature)) if humidity is not None: channel_id = 3 c.execute('INSERT INTO data (channel_id, timestamp, value) VALUES (%s, %s, %s)', (channel_id, timestamp, humidity)) db.commit() #!/usr/bin/python #2019-01-26_00:07 [DHT11] Temp=18.0* Humidity=16.0% import time import MySQLdb db = MySQLdb.connect('localhost', 'vz-admin', 'secure', 'volkszaehler') c = db.cursor() for line in open('dht11.log').readlines(): line = line.rstrip('\r\n') time_ = line[0:16] timestamp = int(time.mktime(time.strptime(time_, '%Y-%m-%d_%H:%M')) * 1000) temperature = float(line[line.find('Temp=')+5:line.find('*')]) humidity = float(line[line.find('Humidity=')+9:line.find('%')]) print time_, timestamp, temperature, humidity if temperature is not None: channel_id = 2 c.execute('INSERT INTO data (channel_id, timestamp, value) VALUES (%s, %s, %s)', (channel_id, timestamp, temperature)) if humidity is not None: channel_id = 3 c.execute('INSERT INTO data (channel_id, timestamp, value) VALUES (%s, %s, %s)', (channel_id, timestamp, humidity)) db.commit()