Welcome, Guest
You have to register before you can post on our site.

Username
  

Password
  





Search Forums

(Advanced Search)

Forum Statistics
» Members: 284
» Latest member: branko
» Forum threads: 104
» Forum posts: 395

Full Statistics

Online Users
There are currently 22 online users.
» 0 Member(s) | 22 Guest(s)

Latest Threads
Datenbank wird nicht mehr...
Forum: SmartPi - Deutsch
Last Post: jens
13.12.2018, 09:08
» Replies: 1
» Views: 71
Grid frequency
Forum: SmartPi - English
Last Post: jhardy
12.12.2018, 17:49
» Replies: 1
» Views: 825
Verwendung von mqtt
Forum: SmartPi - Deutsch
Last Post: ecgtach
29.11.2018, 19:59
» Replies: 15
» Views: 6.279
Smart Pi Einrichten,Daten...
Forum: SmartPi - Deutsch
Last Post: Golimar
27.10.2018, 23:38
» Replies: 0
» Views: 7
Datenbank konnte nicht er...
Forum: SmartPi - Deutsch
Last Post: jens
22.10.2018, 08:29
» Replies: 4
» Views: 2.458
RS485 nutzen
Forum: SmartPi - Deutsch
Last Post: chille
21.09.2018, 07:55
» Replies: 4
» Views: 925
SmartPi Genauigkeit?
Forum: SmartPi - Deutsch
Last Post: jens
13.09.2018, 09:35
» Replies: 1
» Views: 750
Access-Control-Allow-Orig...
Forum: SmartPi - Deutsch
Last Post: jens
13.09.2018, 09:32
» Replies: 3
» Views: 906
Node-RED
Forum: SmartPi - Deutsch
Last Post: bksolo
04.09.2018, 15:54
» Replies: 0
» Views: 525
SmartPi Daten
Forum: SmartPi - Deutsch
Last Post: bksolo
02.09.2018, 18:35
» Replies: 2
» Views: 930

 
  Datenbank wird nicht mehr geschrieben
Posted by: Emmpunkt - 28.11.2018, 09:26 - Forum: SmartPi - Deutsch - Replies (1)

Hallo,
bei einem unserer SmartPi´s wird die Datenbank nicht mehr geschrieben.
Der Gesamtzähler läuft aber weiter.

Anzeige im Webinterface ist "Consumption today: 0 kWh " und "No Data Available"

Logs hab ich schon gelöscht nebst der passenden Einträge.
Wenn ich das richtig sehe, läuft auch alles.

pi@smartpi_nr2:~ $ ps -ef | grep smartpi
avahi      295     1  0 08:40 ?        00:00:00 avahi-daemon: running [smartpinr2.local]
root       483     1  0 08:40 ?        00:00:00 su pi -c /usr/local/bin/smartpireadout
root       484     1  0 08:40 ?        00:00:00 su pi -c /usr/local/bin/smartpiserver
root       485     1  0 08:40 ?        00:00:00 /bin/bash /usr/local/bin/smartpi_check_umts.sh
pi         552   484  0 08:40 ?        00:00:04 /usr/local/bin/smartpiserver
pi         553   483  0 08:40 ?        00:00:24 /usr/local/bin/smartpireadout
pi        1905  1655  0 09:23 pts/0    00:00:00 grep --color=auto smartpi

Gruß Michael

Print this item

  Smart Pi Einrichten,Daten und Node Red
Posted by: Golimar - 27.10.2018, 23:38 - Forum: SmartPi - Deutsch - No Replies

Guten Abend Forum, 

ich habe einen kompletten SmartPi 2.0 gekauft, aber leider komme ich nicht ganz klar damit. Er wurde an einem Ofen installiert mit den Stromklemmen, die ich auch direkt von Enerserve gekauft habe. Mir werden Messwerte angezeigt, aber nicht gespeichert und der Stand des Chart ist noch der Tag vom ersten Anschluss. Ich kann keine alten Daten auslesen weder werden Sie mir angezeigt. 

Auch in Node Red konnte ich die MQTT Verbindung nicht erstellen, da mir node-watch als fehlend angegeben wird. In der Kommandozeile wird mir folgendes bei der Installation angegeben: 

DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.

Ich wäre für ein bisschen Hilfe dankbar. 

Grüße 

Print this item

  RS485 nutzen
Posted by: chille - 13.09.2018, 19:18 - Forum: SmartPi - Deutsch - Replies (4)

Hallo zusammen,
 
ich möchte gerne Daten über den RS485 Port senden / empfangen, bekomme es aber nicht hin. Ich habe es mit modpoll, minicom etc versucht, es tut sich aber nichts. 
Wenn ich einen USB / RS485 Adapter nutze, gelingt der Datenaustausch.
Nutzt schon jemand den Port und hat einen Tipp für mich?

Danke und Gruß
Christian

Print this item

  SmartPi Genauigkeit?
Posted by: holgerhaslbeck - 10.09.2018, 22:34 - Forum: SmartPi - Deutsch - Replies (1)

Hallo!

Ich bin stolzer Neubesitzer eines SmartPi. Das Gerät ist jetzt im Schaltschrank verbaut mit 4 Klemmen (50mA) und er misst auch die Spannung der 3 Phasen.

Bisher habe ich ein GEO Ensemble "Smart Meter" genutzt. Ein Display das man in der Wohnung aufhängen kann und auch per Induktion den Strom an den drei Phasen misst. Die Daten werden per Funk an das Display gesendet und man bekommt live den Stromverbrauch zu sehen. Gleichzeitig schickt er die Daten an eine Internet Bridge die das ganze auf einen Clouddienst lädt. Leider kann man die Echtzeitdaten nicht abgreifen und die Datenauswertungsmöglichkeiten auf der Cloud sind mangelhaft. Deswegen jetzt auch der SmartPi.

Ich muss jetzt aber feststellen, das die Gesamtleistung des SmartPi etwa 22% geringere aktuelle Leistung anzeigt als das GEO Ensemble. Das hat mich nicht so ganz verwundert, weil ich schon das Gefühl hatte, das die Werte des Ensemble recht hoch sind.

Um das durch eine direkte Messung zu Vergleichen habe ich folgendes gemacht:

Ich habe an einen eQ-3 Homematic Zwischenstecker mit Leistungsmesser einen Föhn angeschlossen. Den kann ich vom Rechner aus ein- und ausschalten und sehe die genutzte Leistung an dem Stecker (direkt gemessen) und den Leistungsanstieg auf dem SmartPi Dashboard.

Der Homematic Zwischenstecker zeigt mir folgende Daten bei eingeschaltem Föhn:

  • 226 V Spannung, 7201 mA Strom und 1627,92W Leistung

Der SmartPI auf der Phase der Steckdose:
  • 234 V Spannung,  7390mA Strom  und  1688 W Leistung

Der SmartPi zeigt also um 3% Leistung mehr an als der Zwischenstecker misst. 

Ist das im Toleranzbereich? Oder habe ich etwas falsch angeschlossen? 

Danke für euer Feedback.

Grüße,
Holger

Print this item

  Access-Control-Allow-Origin
Posted by: wellend - 05.09.2018, 21:45 - Forum: SmartPi - Deutsch - Replies (3)

Guten Abend zusammen,

Ich würde gerne per HTTP GET Request die JSON Daten in einer Javascript Seite verarbeiten. An welcher Stelle kann die Einstellung für den Webserver gesetzt werden, dass im Header entsprechende Requests von extern erlaubt sind?

Vielen Dank vorab!
Gruß,
David

Print this item

  Node-RED
Posted by: bksolo - 04.09.2018, 15:54 - Forum: SmartPi - Deutsch - No Replies

Ich habe die ersten Schritte mit Node-RED erfolgreich hinter mir. Habe Node.js und windows-build-tools auf Windows 10 installiert.

Die Paletten habe ich mit sqlite und dashboard ergänzt.  Dann habe ich die sqlite db smartpi_logdata_201808.db vom Raspberry heruntergeladen.
Nun kann ich diese Daten über eine Flow mit SELECT strftime('%d.%m.%Y',date),sum(energy_pos_balanced) from smartpi_logdata_201809 GROUP BY strftime('%d-%m-%Y',date) aus der DB lesen.

Was ich mich nun frage ist, wie kann ich deine flows laden, die unter SmartPi-master\node stehen?

Besten Dank, Bruno

Print this item

  230VAC Energiemessung und Schaltung
Posted by: bksolo - 02.09.2018, 17:55 - Forum: Projekte - No Replies

Ich habe den SmartPi für einen Einsatz von nur einer Phase 230 VAC vorgesehen. Will im Winter die 230 VAC Leistungsaufnahme des Wohnmobils messen. Das WoMo steht zur Überwinterung an einem Ort, wo ich keinen direkten Internetzugang habe. Dazu wird über ein UMTS-Stick die Verbindung zum Raspberry Pi per SMS erstellt. Den aktuellen kumulierten Leistungswert will ich über SMS abrufen können, weiter will ich per SMS die 230 VAC Speisung zum Wohnmobil ein- und ausschalten. Weitere Funktionen werden sich noch ergeben.

Ich verwende auf meinen Raspberry Pi das wvdial über einen HUAWEI LTE Stick E3372h-607 und Swisscom SIM Prepaid. Über PuTTY und WinSCP und Yaler (Yaler is a relay infrastructure for secure access) kann ich erfolgreich darauf zugreifen. 
Zusätzlich habe ich mit SMSTools3 und Scripting eine Steuerung mit SMS erstellt. Den aktuellen Energiewert und Tageswert in kWh kann ich per SMS zu jeder Zeit abrufen.

Vielen Dank an Alle die im Internet Beiträge veröffentlichen - daraus ergeben sich immer wieder Ideen wie die Programmierung erfolgen kann.

Prinzipschaltbild:

   

Aufbaubild:                                                           SMS Leistungsabfrage pro Tag und Monat:

                        

Nachfolgend die wichtigsten Programmteile die ich dazu erstellt habe.

Automatischer Reboot des Raspberry Pi mit rc.local:

Code:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
 printf "My IP address is %s\n" "$_IP"
fi

echo "++++++++++++++ rc.local wird ausgeführt"  > /home/pi/boot.log
sleep 10
lsusb >> /home/pi/boot.log
echo "------------- rc.local usb_modeswitch"  >> /home/pi/boot.log
usb_modeswitch -v 12d1 -p 1f01 -M "55534243123456780000000000000011063000000100010000000000000000"
sleep 3
lsusb >> /home/pi/boot.log
sleep 3
echo "------------- rc.local sms3 restart"  >> /home/pi/boot.log
sudo /etc/init.d/sms3 restart >> /home/pi/boot.log
sleep 3
echo "------------- rc.local wvdial.conf copy"  >> /home/pi/boot.log
sudo cp /etc/wvdial.conf.org /etc/wvdial.conf
sleep 3
echo "------------- rc.local start wvdial"  >> /home/pi/boot.log
sudo wvdial swisscom >> /home/pi/boot.log &
sleep 20
/usr/local/bin/send_sms.sh 4179XXXXXXX "SMS Server wurde gestartet"
echo "------------- rc.local wird verlassen"  >> /home/pi/boot.log

exit 0

sms_handler.sh
Code:
#!/bin/bash

TOOLS_DIR=/usr/local/bin

# this file should contain variable $PHONE with your phone number
. ${TOOLS_DIR}/sms.conf

FWD_NUMBER=$PHONE
timestamp=`date "+%Y%m%d-%H%M%S"`
SMS_PROG=${TOOLS_DIR}/send_sms.sh

#run this script only when a message was received.
if [ "$1" != "RECEIVED" ]; then exit; fi;

#Extract data from the SMS file
SENDER=`formail -zx From: < $2`
TEXT=`formail -I "" <$2 | sed -e"1d"`
mon_tag=${TEXT:8:10}
TEXT=${TEXT:0:7}

TMPINFILE=/tmp/sms_in_${SENDER}_${timestamp}.txt
TMPOUTFILE=/tmp/sms_out_${SENDER}_${timestamp}.txt

CURRENT=$(date -u '+%F')
akttimestamp=`date "+%d.%m.%Y %H:%M:%S"`
echo  $akttimestamp > $TMPINFILE

if [ "$SENDER" = "$FWD_NUMBER" ] ; then
       case "$TEXT" in
       "cmd#011")
               if [ "$mon_tag" == "Er1" ] || [ "$mon_tag" == "Ar1" ]
               then
                 sudo /usr/local/bin/gpio_ausgang.py  ${mon_tag} >> $TMPINFILE 2>&1
               else
                 sudo /usr/local/bin/gpio_ausgang.py RelStatus >> $TMPINFILE 2>&1
               fi
               echo "Result: $?" >> $TMPINFILE
       ;;
       "cmd#021")
               if [ "$mon_tag" == "Er2" ] || [ "$mon_tag" == "Ar2" ]
               then
                 sudo /usr/local/bin/gpio_ausgang.py  ${mon_tag} >> $TMPINFILE 2>&1
               else
                 sudo /usr/local/bin/gpio_ausgang.py RelStatus >> $TMPINFILE 2>&1
               fi
               echo "Result: $?" >> $TMPINFILE
       ;;
       "cmd#031")
               if [ "$mon_tag" == "Ersm" ] || [ "$mon_tag" == "Arsm" ]
               then
                 sudo /usr/local/bin/gpio_ausgang.py  ${mon_tag} >> $TMPINFILE 2>&1
               else
                 sudo /usr/local/bin/gpio_ausgang.py RelStatus >> $TMPINFILE 2>&1
               fi
               sudo /usr/local/bin/gpio_ausgang.py EINRSPI >> $TMPINFILE 2>&1
               echo "Result: $?" >> $TMPINFILE
       ;;
       "cmd#050")
               sudo /usr/local/bin/gpio_ausgang.py RelStatus >> $TMPINFILE 2>&1
               echo "Result: $?" >> $TMPINFILE
       ;;
       "cmd#111")
               sudo /usr/local/bin/tag_monat_energie.py ${mon_tag} >> $TMPINFILE 2>&1
               echo "Result: $?" >> $TMPINFILE
       ;;
       "cmd#997")
               sudo /etc/init.d/sms3 restart >> $TMPINFILE 2>&1
               echo "Result: $?" >> $TMPINFILE
       ;;  
       "cmd#998")
               sudo reboot
       ;;
       "cmd#999")
               sudo shutdown -h now
       ;;
       *)
               echo "Available CMD list:" > $TMPINFILE
               echo "cmd#011 - Relais 1 Er1/Ar1 " >> $TMPINFILE
               echo "cmd#021 - Relais 2 Er2/Ar2 " >> $TMPINFILE
               echo "cmd#031 - Relais SMPi Ersm/Arsm " >> $TMPINFILE
               echo "cmd#050 - Relais Status " >> $TMPINFILE
               echo "cmd#111 - Leistung YYYYMM Tag/Mon " >> $TMPINFILE
               echo "cmd#997 - Restart SMS3 " >> $TMPINFILE
               echo "cmd#998 - Reboot RPi " >> $TMPINFILE
               echo "cmd#999 - Shutdown RPi " >> $TMPINFILE
       ;;
       esac
else
       echo "SMS from: $SENDER" > $TMPINFILE
       echo "Text: $TEXT" >> $TMPINFILE
fi

echo "To: $FWD_NUMBER" > $TMPOUTFILE
echo "" >> $TMPOUTFILE
cat $TMPINFILE >> $TMPOUTFILE
cp $TMPOUTFILE /var/spool/sms/outgoing/

gpio_ausgang.py
Code:
#!/usr/bin/env python
#coding: utf8
#
# Bruno Solothurnmann
# August 2018
#

import time
import RPi.GPIO as GPIO
import sys

def main():
   script = sys.argv[0]
   befehl = sys.argv[1]

   try:
       GPIO.setwarnings(False)
       # Zählweise der Pins festlegen
       GPIO.setmode(GPIO.BOARD)

       # Pin 31 (GPIO 06) als Ausgang festlegen - Ansteuerung LED SmartPI)
       GPIO.setup(31, GPIO.OUT)
       # Pin 32 (GPIO 12) als Ausgang festlegen - Ansteuerung Relais SmartPI)
       GPIO.setup(32, GPIO.OUT)
       # Pin 18 (GPIO 24) als Ausgang festlegen - Ansteuerung Relais 2 (externe Platine)
       GPIO.setup(18, GPIO.OUT)
       # Pin 22 (GPIO 25) als Ausgang festlegen - Ansteuerung Relais 1 (externe Platine)
       GPIO.setup(22, GPIO.OUT)

       if befehl  == "Er1":   #                 Relais 1 und LED SmartPi einschalten
           GPIO.output(22, GPIO.HIGH)
           GPIO.output(31, GPIO.HIGH)
           print "Relais 1 Ein"
       elif befehl == "Ar1":   #                 Relais 1 und LED SmartPi ausschalten
           GPIO.output(22, GPIO.LOW)
           GPIO.output(31, GPIO.LOW)
           print "Relais 1 Aus"
       elif befehl == "Er2":  #                 Relais 2 einschalten
           GPIO.output(18, GPIO.HIGH)
           print "Relais 2 Ein"
       elif befehl == "Ar2":  #                 Releais 2 ausschalten
           GPIO.output(18, GPIO.LOW)
           print "Relais 2 Aus"
       elif befehl == "Ersm":  #                 Relais SmartPi einschalten
           GPIO.output(32, GPIO.HIGH)
           print "Relais SmartPi Ein"
       elif befehl == "Arsm":  #                 Relais SmartPi ausschalten
           GPIO.output(32, GPIO.LOW)
           print "Relais SmartPi Aus"
       elif befehl == "RelStatus":  #             Relais Status
          if GPIO.input(22) == GPIO.HIGH:
            print "Relais 1 Ein"
          else:
            print "Relais 1 Aus"
          if GPIO.input(18) == GPIO.HIGH:
            print "Relais 2 Ein"
          else:
            print "Relais 2 Aus"
          if GPIO.input(32) == GPIO.HIGH:
            print "Relais SmartPi Ein"
          else:
            print "Relais SmartPi Aus"
       else:
           print "Befehl = " + befehl

   except:
           # this catches ALL other exceptions including errors.  
           # You won't get any error messages for debugging  
           # so only use it once your code is working  
           print "Other error or exception occurred!"  
           
if (__name__ == "__main__" ):
   main();

tag_monat_energie.py
Code:
#!/usr/bin/env python
#coding: utf8
#
# Bruno Solothurnmann
# August 2018
# Ausgabe der Tages- und Monatswerte in kWh von der SmartPi SQLite DB
#
# Aufruf: /usr/local/bin/tag_monat_energie.py (Bereich) (Tag_Monat)
# Bereich in YYYYMM  
# und Tag_Monat in Tag oder Monat
#

import time
import sys
import sqlite3

def main():
   script = sys.argv[0]
   bereich = sys.argv[1]
   tag_monat = sys.argv[2]

   try:
      sqlite_file = '/var/smartpi/db/smartpi_logdata_%s.db' % (bereich)
      conn = sqlite3.connect(sqlite_file)
      c = conn.cursor()
      if tag_monat  == "Tag":
        sql_text = "SELECT strftime('%d.%m.%Y',date),sum(energy_pos_balanced) FROM smartpi_logdata_{} WHERE date BETWEEN '2018-08-01 00:00:01' AND '2022-08-31 23:59:59' GROUP BY strftime('%d-%m-%Y',date)".format(bereich)
      elif tag_monat == "Mon":
        sql_text = "SELECT strftime('%m.%Y',date),sum(energy_pos_balanced) FROM smartpi_logdata_{} WHERE date BETWEEN '2018-08-01 00:00:01' AND '2022-08-31 23:59:59' GROUP BY strftime('%m-%Y',date)".format(bereich)
      else:
        print "Nur Tag oder Mon zugelassen"
        sys.exit()
      c.execute(sql_text)
      all_rows = c.fetchall()

      for member in all_rows:
         dat =  member[0]
         wert = float(member[1])/1000
         wert = "{:.3f}".format(wert)
         if tag_monat  == "Tag":
            print "Tag " + dat + " " + wert + " kWh"
         else:
            print "Monat " + dat + " " + wert + " kWh"

   except:
           print "Other error or exception occurred!"

   finally:
      conn.close()

if (__name__ == "__main__" ):
   main();
Über die SQL-Abfrage sind die kumulierten Daten aus der SQLite DB sehr rasch verfügbar. 
Eine Erweiterung habe ich noch vor, die erstellten Daten in eine weitere SQLite DB zu schreiben. Damit können dann auch entsprechende Graphen erstellt werden.

Ich bin kein Profi in der Programmierung - es funktioniert aber seit Tagen ohne Probleme.
Gerne stehe ich für Fragen und Erklärungen zur Verfügung.

Gruss, Bruno

Print this item

  SmartPi Daten
Posted by: bksolo - 29.08.2018, 14:16 - Forum: SmartPi - Deutsch - Replies (2)

Mit recht viel Aufwand konnte ich die entsprechenden Daten, die durch die Software vom SmartPi erstellt wird, finden. 
Die Dokumentation ist unvollständig, die Ablage der Daten an verschiedensten Orten. SQLite DB (pro Minute), Datei (pro 5 Sekunden), Webseite und REST-API. 
Wer nicht GO und alle dazu geladenen Programme und Libraries kennt, ist kaum in der Lage in vernünftiger Zeit etwas zu ergänzen. Nicht alle Daten sind einfach verfügbar bzw. zugreifbar.

Zusätzlich habe ich eine REST-API /api/dayvalues/1/energy_pos/from/2018-08-19T00:00:00+02:00/to/2018-08-26T21:49:14+02:00 gefunden, die ein Tageswert der verbrauchten Energie vom eingegebenen Datum in Watt zurück gibt.

Ich kann auf meinen Raspberry Pi mit wvdial über einen HUAWEI LTE Stick E3372h-607 und Swisscom SIM Prepaid über PuTTY und WinSCP und Yaler (Yaler is a relay infrastructure for secure access to embedded systems) erfolgreich darauf zugreifen. 
Zusätzlich habe ich mit SMSTools3 und Scripting eine Kommandsteuerung mit SMS erstellt. Den aktuellen Energiewert in Watt oder den Tageswert in Watt kann ich per SMS abrufen, über ein externes Relais den 230VAC Speisung ein- und ausschalten.  

Gerne hätte ich mehr kumulierte Daten wie Tagesverbrauch, Wochenverbrauch und Monatsverbrauch in der DB gespeichert. Ich bin an diesen gerade so stark interessiert wie die aktuellen Werte.

Gerne höre ich von euch was ihr damit gemacht habt, was eure Erfahrungen sind.
Gruss, Bruno

Print this item

  https
Posted by: quadro - 04.08.2018, 12:43 - Forum: SmartPi - English - Replies (1)

The smartpi server software creates a webserver with access on the default port 1080 (changeable).
Is it possible to access the smartpi using the https protocol in place of the default http?

Print this item

  Image too large
Posted by: quadro - 01.08.2018, 10:43 - Forum: SmartPi - English - Replies (1)

I downloaded the new image with version 0.9.1, but I cannot write it on a SD card.
I tried several SD cards of 16 Gbyte, but when I write the image on the SD card, it always said that I need more space.
I tried writing with Win32DiskImage and Etcher, they gave the same result.
It seems that most SD cards or not really 16 Gbyte, but only 15,5 Gbyte.
Is it possible to make the existing image smaller (for example 15 Gbyte) so it will fit any SD card of 16 Gb?

Print this item