KM200 standalone Script

Hallo,
ich habe anhand des km200.php (php only) ein kleines Dashboard erstellt, welches komplett ohne irgendeine Basis (symcon,Openhab,etc.) auskommt.
Es ist noch ein recht früher Entwurf, aber vielleicht nützt es euch bereits etwas.
Momentan werden nur Daten gelesen, schreiben ist bereits enthalten und funktionstüchtig, jedoch noch nicht fertig programmiert.
Benötigt wird nur ein lokaler Webserver und eine SQL Datenbank das ganze enthält einen Installer.

  1. DB erstellen
  2. Script auf den Server laden
  3. SERVERADRESSE/PFAD/index.php aufrufen
    jetzt sollte der Installer starten.

im Anhang sind ein paar Screenshots und das eigentliche Script
installer_1.pnginstaller_2.png

kmxxx_V1.1.zip (446 KB)

Lauft es auf nem Pi oder welche Hardware ist benutzt. Perfekt wäre noch Modbus für die Verbindung zur SPS:D

Aber tolles Projekt;)

Danke fürs teilen. Unter welcher Lizenz stellst Du das ganze? Darf man das modifizieren? Wäre halt speziell für IP-Symcon praktisch man würde die Formularfelder zur Konfiguration z.B. in ein Konfigurationsformular einen PHP Moduls überführen, PHP läuft ja so oder so nur statt der SQL Datenbank würde man dann die Daten in IP-Symcon ablegen, das erspart das zusätzliche aufsetzten einer SQL Datenbank. Das Ganze sieht aber von der Oberfläche sehr nett aus.

Das ganze basiert auf dem Script von hier:
Buderus Logamatic Web KM200 - Reloaded - Seite 31

V1.2 hinzugefügt.

Changelog V1.1 zu V1.2

Eingabe von Texten zu den Services inkl. automatischer erstellung in der DB
und Eintrag von Default Texten
welche jedoch jederzeit geändert werden können im Browser.
(momentan noch keine Verwendung der Texte im Script folgt in späterer Version)
P.S. Da ich die Services von allen Heizungen nicht kenne,
wäre es nett wenn wir gemeinsam die default_services_texts.txt vervollständigen könnten.

geändert:
menu.php
config/define_constants.php

neu:
set_services_text.php
ajax_update_services_text.php
include/set_services_text.php
functions/func_txt_array.php
default_services_text.txt

Neuerung:


kmxxx_V1.2.zip (451 KB)

P.S. vielleicht benötigt jemand nur die Fehlerliste, es ist eine SQL im Paket, in welcher diese enthalten sind

Changelog V1.2 zu V1.3
Fehlercodes in DB eingefügt
(falls nicht vorhanden wird es beim Aufruf der Seite fehlercodes.php erstellt)
manuelle Suche nach Fehlern im Browser möglich
(spätere Nutzung für Anzeige somit gegeben)

geändert:
menu.php
include/set_service_text.php (überflüssige Zeile entfernt)

neu:
fehlercodes.sql
fehlercodes.php
include/fehlercodes.php
ajax_update_fehlercodes.php
functions/func_mysqli_import_sql.php
functions/func_get_fehler_info_array.php

Neuerung:


kmxxx_V1.3.zip (501 KB)

Hallo kunigunde,

vielen Dank für das Skript. Ich würde es gerne ausprobieren und habe es dazu installiert.
Ich bin bis zur Eingabe der IP usw. gekommen, dann ist die Installation bei

 Bitte warten, lese Subservices aus

stehen gelieben.
Nachdem sich sehr lange nichts getan hat habe ich reload gedrückt.
Jetzt habe ich:

1. Datei: config/config.phperfolgreich erstellt
2. Tabellen und Mainservices in DB: km200 erstellen.
There was an error on File: 
Line 15 - Duplicate entry '1' for key 'PRIMARY'
4. Bitte warten, lese Subservices aus

Hatte ich zu wenig Gedult?
Was kann ich jetzt bitte tun?

Viele Grüße, Tomte.

Hallo,

ich habe festgestellt, dass ich das Problem der doppelten Einträge loswerden kann, wenn ich die SQL-Datenbank lösche und neu anlegen.
Allerdings läuft die Suche nach Subservices deswegen trotzdem nicht durch.
So sieht meine SQL-Datenbank bisher aus:

Hat jemand eine Idee woran das Problem liegt?
Meine Ausführungszeit habe ich schon auf 1000s erhöht.

Viele Grüße, Tomte

Hallo,

kannst du mal die db nochmals leeren,
danach in der install.php
das errorreporting einschalten:
mache aus


error_reporting(0);

dies hier:


error_reporting(E_ALL);

was wird dir hier ausgegeben nach dem erneutem start der installation?

Hallo,

ich bekomme:

1. Datei: config/config.phperfolgreich erstellt
2. Tabellen und Mainservices in DB: km200 erstellen.
3. Tabellen und Mainservices in DB: erfogreich erstellt.
4. Bitte warten, lese Subservices aus

Dann passiert nichts mehr.

Gibt es ein Error-log oder so?

VG, Tomte

kannst du bitte mal die datei include\create_servicelist.php
ersetzen mit dieser:


<?php
//Subservices erstellen
require_once './config/config.php';
require_once './config/define_constants.php';
require_once './functions/func_get_subservices.php';
// test
echo '<hr>create_servicelist.php gestartet</br>';

$forbidden_keywords = file(FORBIDDEN_SERVICES, FILE_IGNORE_NEW_LINES);

$mysqli = new mysqli(DB_HOST, DB_USER, DB_PW, DB_NAME);
if ($mysqli->connect_error) {die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);}
if (mysqli_connect_error()) {die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());}
// hole Main Services aus DB
$get_query = "SELECT * FROM `main_services` where active = 1 ORDER by ID DESC";
if ($result = $mysqli->query($get_query)) {
    // test
    echo 'Main Services in DB gefunden</br>';
    
    while ($main_service = $result->fetch_assoc()) {
      // test
      echo '<h1>Starte mit: '.$main_service["name"].'</h1>';    
    
      $service = array(0 => $main_service["name"]);
      
      $level_1 = get_subservices($service);
      $level_2 = get_subservices($level_1);
      $level_3 = get_subservices($level_2);
      $level_4 = get_subservices($level_3);
      $level_5 = get_subservices($level_4);
      
      $sub_services = array_merge($service, $level_1, $level_2, $level_3, $level_4, $level_5);
      sort($sub_services);
      // test
      echo 'gefundene Sub Services: <pre>';
      print_r($sub_services);
      echo '</pre><hr>';

      foreach ($sub_services as $service) {
        $get_query = "SELECT * FROM `sub_services` WHERE `name` = '".$service."' LIMIT 1";

        if ($get_result = $mysqli->query($get_query)) {
          $allready_exist = $get_result->num_rows;
          if($allready_exist == 0){
            if (!in_array($service, $forbidden_keywords)) {
                  $mysqli->query("
                  INSERT INTO  `sub_services` (
                                                `id` ,
                                                `main_service_id` ,
                                                `name` ,
                                                `active`
                                              )
                                              VALUES (
                                                NULL , 
                                                '".$main_service["id"]."' ,
                                                '".$service."',
                                                '1'
                                              )
                  ");   
            }else{
                  $mysqli->query("
                  INSERT INTO  `sub_services` (
                                                `id` ,
                                                `main_service_id` ,
                                                `name` ,
                                                `active`
                                              )
                                              VALUES (
                                                NULL , 
                                                '".$main_service["id"]."' ,
                                                '".$service."',
                                                '0'
                                              )
                  "); 
            }          
          }
          $get_result->close();        
        }
      }
    }
    $result->free();
}
$mysqli->close();

/*
$Main_services = file(MAIN_SERVICES, FILE_IGNORE_NEW_LINES);

$level_1 = get_subservices($Main_services);

$level_2 = get_subservices($level_1);

$level_3 = get_subservices($level_2);

$level_4 = get_subservices($level_3);

$level_5 = get_subservices($level_4);

$Services = array_merge($Main_services, $level_1, $level_2, $level_3, $level_4, $level_5);
sort($Services);

$fp = fopen(CREATED_SERVICELIST, 'w'); 
foreach($Services as $values) fputs($fp, $values."
"); 
fclose($fp);
echo '<h2>'.CREATED_SERVICELIST .' erstellt. Bitte aktualisieren</h2>';
*/        
?>

Hallo kunigunde,

das habe ich gemacht, leider ändert sich nichts.
Nach „4. Bitte warten, lese Subservices aus“ passiert weiterhin nichts mehr.
Hast Du noch eine Idee oder sollen wir aufgeben?

Viele Grüße, Tomte

Hallo Kunigunde,

ich hätte noch Interesse das Problem zu lösen, wenn Du mich unterstützt.
(Vielleicht hast Du mich misverstanden?)
Ansonsten - Danke.

Viele Grüße, Tomte

nachdem es bei mir auch nicht weiter ging habe ich die Änderung in der Datei vorgenommenen stehen nun bei

  1. Datei: config/config.phperfolgreich erstellt
  2. Tabellen und Mainservices in DB: Buderus erstellen.
  3. Tabellen und Mainservices in DB: erfogreich erstellt.
  4. Bitte warten, lese Subservices aus
    create_servicelist.php gestartet
    Main Services in DB gefunden
    Starte mit: /notifications

ich würde das Script gerne nutzen da die App und das Puderns Webinterface immer wieder Verbindungsprobleme Probleme bereiten