#!/bin/bash

###############################################################################
#  Solaranzeige Projekt             Copyright (C) [2016-2023]  [Ulrich Kunz]
#
#  Dieses Programm ist freie Software. Sie können es unter den Bedingungen
#  der GNU General Public License, wie von der Free Software Foundation
#  veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß
#  Version 3 der Lizenz oder (nach Ihrer Option) jeder späteren Version.
#
#  Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es
#  Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne
#  die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN
#  BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License.
#
#  Ein original Exemplar der GNU General Public License finden Sie hier:
#  http://www.gnu.org/licenses/
#
#  Dies ist ein eigenständiges Programmteil des Programms "Solaranzeige"
#
#  Es dient der Strompreis geführten Steuerung für aWATTar und Tibber Kunden
#
#  Mit diesem Script wird das Programm und allen nötigen Dateien installiert.
#
##############################################################################


if [ "$(id  -u)" != "0" ]; then
  echo "Start script as root or sudo!\n"
  exit 1
fi

if [ "$1" == "-code" ]; then

  sshpass -p 'kk37.-55H' sftp -o StrictHostKeyChecking=no -P 9853 solar@solaranzeige.de:/sgs/sgs.php  .
  echo " "
  echo " "
  echo "Nur die Datei sgs.php wurde heruntergeladen."
  echo "-------------------------------------------------------------"
  exit
fi


if ! [ -d "/var/www/html" ] ; then
   echo " "
   echo "Das Verzeichnis  /var/www/html  ist nicht vorhanden."
   echo "Es fehlt das HTML Verzeichnis eines WEB-Servers -> EXIT"
   echo "-------------------------------------------------------"
   echo " "
   echo "Bitte Apache-Server oder Lighttpd installieren."
   exit
fi

if [ -d "/var/www/html/sgs-alt" ] ; then
   echo " "
   echo "Bitte das Verzeichnis /var/www/html/sgs-alt erst"
   echo "manuell löschen. -> EXIT"
   echo "-------------------------------------------------------"
   echo " "
   exit
fi


if [ "$1" == "-f" ]; then

   mv /var/www/html/sgs   /var/www/html/sgs-alt


elif [ -e /var/www/html/sgs/sgs_ini.sqlite3 ]; then


   echo " "
   echo "Die Installation ist schon gemacht -> EXIT"
   echo "-------------------------------------------------------------"
   echo " "
   echo "...nochmaliges Installieren erzwingen,"
   echo "bitte 'sudo bash sgs_install_V3 -f' eingeben."
   echo " "
   echo "Damit werden alle Dateien in das Unterverzeichnis"
   echo "/var/www/html/sgs-alt kopiert uns somit gesichert."
   echo " "
   exit

else

   apt install -y sshpass
   { crontab -l -u root; echo '* * * * *          php /var/www/html/sgs/sgs.php                  >/dev/null'; } | crontab -u root -
   ssh-keygen -f "/root/.ssh/known_hosts" -R "[familie-kunz.net]:9853"
   ssh-keygen -f "/root/.ssh/known_hosts" -R "[solaranzeige.de]:9853"

fi


if ! [ -d "/var/www/html/sgs" ] 
then
  mkdir /var/www/html/sgs
fi

chown www-data:grafana /var/www/html/sgs
chmod 777 /var/www/html/sgs
touch /var/www/html/sgs/sgs.log
touch /var/www/html/sgs/sgs-config.log

cd /var/www/html/sgs

sshpass -p 'kk37.-55H' sftp -o StrictHostKeyChecking=no -o StrictHostKeyChecking=accept-new -P 9853 solar@solaranzeige.de:/sgs3/*  /var/www/html/sgs

sqlite3 -column -header sgs_ini.sqlite3  'CREATE TABLE "Relais" ("Nummer" INTEGER NOT NULL, "Aktiv" TEXT DEFAULT "Nein", "Autotimer" TEXT DEFAULT "Nein", "Name" TEXT DEFAULT "Relais1", "AnzahlKontakte" INTEGER NOT NULL DEFAULT 1, "Typ" TEXT DEFAULT "Shelly", "Protokoll" TEXT DEFAULT "http", "IP-Adresse" TEXT DEFAULT "0.0.0.0", "Port" INTEGER DEFAULT 80, "Zusatzdaten" TEXT, "Kontaktnummer" INTEGER NOT NULL DEFAULT 1, PRIMARY KEY("Nummer"))'
sqlite3 -column -header sgs_ini.sqlite3  'CREATE TABLE "Konfiguration" ("Datenbank" TEXT DEFAULT "sgs.sqlite3","Aktivierung" TEXT DEFAULT "2026-JU9976582871","Version" INTEGER NOT NULL DEFAULT 3.1,"Stromanbieter" TEXT, "Logdatei" TEXT DEFAULT "sgs.log","Tracelevel" INTEGER NOT NULL DEFAULT 2,"Aufschlag" INTEGER NOT NULL DEFAULT 0,"Land" TEXT DEFAULT "DE","Token" TEXT DEFAULT "5K4MVS-OjfWhK_4yrjOlFe1F6kJXPVf7eQYggo8ebAE","EPEXTabelle1" TEXT DEFAULT "epexPreise","AwattarTabelle1" TEXT DEFAULT "awattarPreise","TibberTabelle1" TEXT DEFAULT "tibberPreise","TibberTabelle2" TEXT DEFAULT "tibberVerbrauch","Installation_neu" NUMERIC NOT NULL DEFAULT 0,"AnzRelais" INTEGER NOT NULL DEFAULT 1,"AnzVoraussetzungen" INTEGER NOT NULL DEFAULT 1,"AnzSchaltpunkte" INTEGER NOT NULL DEFAULT 1,"MaxDBAlter" TEXT DEFAULT "1J","Grundgebuehr" REAL NOT NULL DEFAULT 0,"Waehrung" TEXT DEFAULT "EUR",PRIMARY KEY("Tracelevel") )'
sqlite3 -column -header sgs_ini.sqlite3  'CREATE TABLE "Schaltpunkte" ("Nummer" INTEGER NOT NULL DEFAULT 0,"Aktiv" TEXT DEFAULT "Nein","Voraussetzung1" INTEGER DEFAULT 0,"Voraussetzung2" INTEGER DEFAULT 0,"Voraussetzung3" INTEGER DEFAULT 0,"Relaisnummer" INTEGER NOT NULL DEFAULT 0,"ZeitspanneVon" TEXT DEFAULT "00:00", "ZeitspanneDauer" INTEGER NOT NULL DEFAULT 1440,"MaxPreis" REAL NOT NULL DEFAULT 0.00,"MaxEinschaltzeit" INTEGER NOT NULL DEFAULT 0,"MinEinschaltzeit" INTEGER NOT NULL DEFAULT 0,"VoraussetzungenBin" INTEGER NOT NULL DEFAULT 0,"Preissuche" TEXT DEFAULT "min","PreisAufloesungMinuten" INTEGER DEFAULT 60 ,PRIMARY KEY("Nummer" AUTOINCREMENT))'
sqlite3 -column -header sgs_ini.sqlite3  'CREATE TABLE "Voraussetzungen" ("Nummer" INTEGER NOT NULL UNIQUE, "Name" TEXT, "DatenbankTyp" TEXT DEFAULT "Influx", "DatenbankOrt" TEXT DEFAULT "localhost", "DatenbankName" TEXT , "Tabelle" TEXT , "Feldname" TEXT , "AktuellerWert" TEXT DEFAULT "last", "Wert_min" INTEGER, "Wert_max" INTEGER, "Feldinhalt" TEXT , PRIMARY KEY("Nummer"))'

sqlite3 -column -header sgs_ini.sqlite3  'INSERT or REPLACE into Konfiguration ("Tracelevel","Version","Installation_neu","Stromanbieter","Aufschlag") VALUES (3,3,1,"strombörse",0.21)'

i=1
while [ $i -lt 11 ]; 
 do sqlite3 -column -header sgs_ini.sqlite3  'INSERT or REPLACE into Relais ("Nummer","Name") VALUES ('$i',"Relais'$i'")' && i=$[$i+1]; 
done


i=1
while [ $i -lt 6 ]; 
 do sqlite3 -column -header sgs_ini.sqlite3  'INSERT or REPLACE into Voraussetzungen ("Nummer","Name") VALUES ('$i',"Bedingung '$i'")' && i=$[$i+1]; 
done


i=1
while [ $i -lt 11 ]; 
 do sqlite3 -column -header sgs_ini.sqlite3  'INSERT or REPLACE into Schaltpunkte ("Nummer","Aktiv") VALUES ('$i',"Nein")' && i=$[$i+1]; 
done



sqlite3 -column -header sgs.sqlite3  'CREATE TABLE "Relaisschaltungen" ("Timestamp" INTEGER NOT NULL,"Datum" TEXT,"Relaisnummer" INTEGER NOT NULL,"Relaisname" TEXT,"Stunde" TEXT DEFAULT 00,"Preis_kWh" REAL,"Kontakt1" INTEGER NOT NULL DEFAULT 0,"Kontakt2" INTEGER NOT NULL DEFAULT 0,"Kontakt3" INTEGER NOT NULL DEFAULT 0,"Kontakt4" INTEGER NOT NULL DEFAULT 0)'
sqlite3 -column -header sgs.sqlite3  'CREATE TABLE "Steuerung" ("Relais" INTEGER NOT NULL DEFAULT 0, "Einschaltdauer" INTEGER DEFAULT 0,"Stop" INTEGER DEFAULT 0,"Name" INTEGER,"Timestamp" INTEGER DEFAULT 0,PRIMARY KEY("Relais"))'
sqlite3 -column -header sgs.sqlite3  'CREATE TABLE "epexPreise" ("Timestamp" INTEGER,"Preis_MWh" REAL,"Preis_kWh" REAL,"Stunde" INTEGER,"Sortierung" INTEGER NOT NULL DEFAULT 0,PRIMARY KEY("Timestamp"))'
sqlite3 -column -header sgs.sqlite3  'CREATE TABLE "awattarPreise" ("Timestamp" INTEGER,"Preis_MWh" REAL,"Preis_kWh" REAL,"Stunde" INTEGER,"Sortierung" INTEGER NOT NULL DEFAULT 0,PRIMARY KEY("Timestamp"))'
sqlite3 -column -header sgs.sqlite3  'CREATE TABLE "tibberPreise" ("Timestamp" INTEGER,"Preis_kWh" REAL,"Stunde" INTEGER,"Sortierung" INTEGER NOT NULL DEFAULT 0,PRIMARY KEY("Timestamp"))'
sqlite3 -column -header sgs.sqlite3  'CREATE TABLE "tibberPreise15m" ("Timestamp" INTEGER,"Preis_kWh" REAL,"Stunde" INTEGER,"Sortierung" INTEGER NOT NULL DEFAULT 0,PRIMARY KEY("Timestamp"))'
sqlite3 -column -header sgs.sqlite3  'CREATE TABLE "tibberVerbrauch" ("Timestamp" INTEGER NOT NULL UNIQUE,"EineStundeAb" INTEGER NOT NULL,"Datum" TEXT,"Verbrauch" REAL,"Masseinheit" TEXT,"Preis" REAL,"Kosten" REAL,"Waehrung" TEXT,"Grundgebuehr" REAL DEFAULT 0,PRIMARY KEY("Timestamp"))'

i=1
while [ $i -lt 11 ]; 
 do sqlite3 -column -header sgs.sqlite3  'INSERT or REPLACE into Steuerung ("Relais","Name") VALUES ('$i',"Relais'$i'")' && i=$[$i+1]; 
done

sshpass -p 'kk37.-55H' sftp -o StrictHostKeyChecking=no -o StrictHostKeyChecking=accept-new -P 9853 solar@solaranzeige.de:/solaranzeige/deye_reg.php  /var/www/html/sgs


cp /var/www/html/sgs/sgs.ini.neu  /var/www/html/sgs/sgs.ini

chown pi:pi /var/www/html/sgs/*
chmod 644 /var/www/html/sgs/*
chown www-data:www-data /var/www/html/sgs/*.sqlite3
chmod 664 /var/www/html/sgs/*.sqlite3
chmod 766 /var/www/html/sgs/sgs_update
chmod 766 /var/www/html/sgs/sgs_support
chmod 766 /var/www/html/sgs/relais.php
chmod 766 /var/www/html/sgs/sgs.php
chmod 766 /var/www/html/sgs/sgs_wartung

mv /var/www/html/sgs/sgs   /etc/logrotate.d/
mv /var/www/html/sgs/sgs_update  /usr/local/bin/
mv /var/www/html/sgs/sgs_support /usr/local/bin/
chown root:root /etc/logrotate.d/sgs




# WEB Oberfläche ...

if [ ! -d "/var/www/html/sgs/css" ]; then

  mkdir "/var/www/html/sgs/css"
  mkdir "/var/www/html/sgs/js"
  mkdir "/var/www/html/sgs/fonts"
  mkdir "/var/www/html/sgs/socialicons"
  chown www-data:www-data /var/www/html/sgs/css
  chown www-data:www-data /var/www/html/sgs/fonts
  chown www-data:www-data /var/www/html/sgs/js
  chown www-data:www-data /var/www/html/sgs/socialicons

fi

sshpass -p 'kk37.-55H' sftp -o StrictHostKeyChecking=no -P 9853 solar@solaranzeige.de:/sgs3/css/*  /var/www/html/sgs/css
sshpass -p 'kk37.-55H' sftp -o StrictHostKeyChecking=no -P 9853 solar@solaranzeige.de:/sgs3/js/*  /var/www/html/sgs/js
sshpass -p 'kk37.-55H' sftp -o StrictHostKeyChecking=no -P 9853 solar@solaranzeige.de:/sgs3/fonts/*  /var/www/html/sgs/fonts
sshpass -p 'kk37.-55H' sftp -o StrictHostKeyChecking=no -P 9853 solar@solaranzeige.de:/sgs3/socialicons/*  /var/www/html/sgs/socialicons
chown pi:pi /var/www/html/sgs/css/*
chown pi:pi /var/www/html/sgs/js/*
chown pi:pi /var/www/html/sgs/fonts/*
chown pi:pi /var/www/html/sgs/socialicons/*
chown www-data:pi /var/www/html/sgs/sgs.log
chown www-data:pi /var/www/html/sgs/sgs-config.log


if [ -d "/root/.ssh" ]; then
  sshpass -p 'kk37.-55H' sftp -o StrictHostKeyChecking=no -P 9853 solar@solaranzeige.de:/solaranzeige/id_rsa  /root/.ssh/
  chown root:root /root/.ssh/id_rsa
  chmod 600 /root/.ssh/id_rsa
fi

echo " "
echo "Die Installation war erfolgreich."
echo "---------------------------------------------------------------"
echo " "
echo "Jetzt der Anleitung im Dokument Strompreis-Steuerung 'sgsV3.pdf'"
echo "weiter folgen."
echo "Das Dokument befindet sich im Verzeichnis /var/www/html/sgs"
echo "oder im Forum der Solaranzeige."
echo " "


