[Modul] Archive Control MySQL

SDK Version License
Version Check Style Run Tests
Spenden

Symcon-Modul: MySQL Archiv

Zusätzliches Archiv für MySQL Datenbanken.

Dokumentation

Inhaltsverzeichnis

1. Funktionsumfang

Variablenveränderungen in einer MySQL-Datenbank speichern.
Auslesen mit ACMYSQL_* PHP-Funktionen (kompatibel mit den AC_* Befehlen).

Achtung:
Dieses ‚Archive Control‘ ersetzt nicht das Original in IPS.
Es wird nicht zur Visualisierung der IPS eigenen Graphen genutzt.
Ebenso kann das Logging-Verhalten nicht über die Einstellungen der Variable angepasst werden, sondern nur in der Instanz ‚Archiv MySQL‘.
Der Typ Zähler ist aktuell nicht verfügbar.

Um die gespeicherten Daten darzustellen, müssen Umsetzungen von dritten (wie z.B. Highcharts) genutzt werden.
Eine angepasste Highcharts.ips.php ist unter ‚docs‘ beigefügt und kann über die Konfiguration der Instanz in den Objektbaum kopiert werden.

2. Voraussetzungen

  • IPS ab Version 5.1
  • MySQL Server

3. Installation

IPS 5.1:
Bei privater Nutzung: Über den ‚Module-Store‘ in IPS das Modul MySQL Archiv hinzufügen.

Bei kommerzieller Nutzung (z.B. als Errichter oder Integrator) wenden Sie sich bitte an den Autor.

4. Vorbereitungen

  • Der MySQL-Server muss von IPS aus erreichbar sein.
  • Es muss ein Benutzer mit allen erforderlichen Rechten vorhanden sein. (Daten & Struktur)

5. Einrichten der Instanz in IPS

  • Auf der Willkommen-Seite von IPS dem Link ‚Instanz hinzufügen‘ öffnen.
  • In den Schnellfilter MySQL eingeben.
  • Den Eintrag ‚Archiv MySQL‘ wählen und mit OK bestätigen.
  • Die Instanz über einen weiten Klick auf OK erzeugen.
  • Im folgenden Dialog des Konfigurator müssen jetzt erst die Zugangsdaten zum MySQL-Server eingegeben werden.
  • Die zu loggenden Variablen müssen über den Button ‚hinzufügen‘ und dann durch einen Klick auf den Stift ausgewählt werden.

6. PHP-Funktionsreferenz

Es sind alle IPS Befehle des Original Archive-Control vorhanden.
Der Prefix muss nur von AC_ gegen ACMYSQL_ ersetzt werden.
Da aktuell keine Zähler unterstützt werden, werden diese Rückgabewerte immer mit 0 übergeben.

7. Parameter

Name Eigenschaft Typ Standardwert Funktion
Host Host string Hostname / IP-Adresse
Datenbank Database string ips Name der Datenbank
Benutzername Username integer Benutzername MySQL
Passwort Password string Passwort MySQL
Variablen Variables string {} JSON-String mit allen VariablenID

8. Anhang

1. GUID der Module

Modul Typ Prefix GUID
Archive Control MySQL Device ACMYSQL {FDCB334A-AFFF-4785-9596-D380252CEE4E}

2. Changelog

Version 3.35:

  • Das Anzeigen der Konfiguration konnte fehlschlagen, wenn in einer Tabelle keine Werte vorhanden waren.
  • ACMYSQL_GetAggregationVariables konnte fehlschlagen, wenn in einer Tabelle keine Werte vorhanden waren.
  • ACMYSQL_ChangeVariableID konnte fehlschlagen,wenn in einer Tabelle keine Werte vorhanden waren.
  • ACMYSQL_GetLoggedValues konnte fehlschlagen,wenn in einer Tabelle keine Werte vorhanden waren.
  • ACMYSQL_GetAggregatedValues konnte fehlschlagen,wenn in einer Tabelle keine Werte vorhanden waren.

Version 3.31:

  • Fix für defekte 3.20 Version.

Version 3.20:

  • Release für IPS 5.1 und den Module-Store

Version 3.10:

  • Buffer Tread-Safe mit Semaphore abgesichert.

Version 3.00:

  • Loggen der Daten von Nachrichtenschlange entkoppelt.

Version 2.50:

  • Anpassungen für IPS 5.1

Version 2.00:

  • Anpassungen für IPS 5.0
  • Modul intern umgebaut
  • Konfiguration für WebConsole verbessert

Version 1.02:

  • Fixes für IPS 5.0

Version 1.01:

  • Erstes offizielles Release

9. Spenden

Die Library ist für die nicht kommerzielle Nutzung kostenlos, Schenkungen als Unterstützung für den Autor werden hier akzeptiert:

Wunschliste

10. Lizenz

IPS-Modul:
CC BY-NC-SA 4.0

Hallo Nall-chan,

danke für’s aufgreifen des Gedanken.

Werds bei Gelegenheit testen. Bin gerades etwas zu beschäftigt.

Grüsse,

Wolfgang

Hallo Michael,

ich habe es Gestern mal ausprobiert und ein paar Temperaturen in MySQL geschrieben. Heute kurz einen ODBC-Link auf die MySQL-DB gesetzt und eine Exceltabelle importieren lassen. Coole einfache Sache.

So wie ich das verstehe, werden alle Werte einer Variable in eine MySQL-Tabelle geschrieben. Damit kann ich dann mit Standard SQL-Befehle für meine Auswertungen nutzen ohne auf AC_-Befehle angewiesen zu sein. Macht Spass, danke.

Gruss
Bernd

Schön wenn es jemand gebrauchen kann :slight_smile:
Würde mich freuen, wenn jemand der gut SQL kann, bitte die Befehle der Aggregationen prüft.
Effektiv habe ich zuletzt vor ca 15 Jahren mit SQL gearbeitet, kann auch Quark sein was da rauskommt [emoji14]
Michael

Hallo,

bin hier noch am verzweifeln an dem Modul.
Folgende Konstellation funktioniert bei mir ohne Probleme:

  1. IP Symcon auf Pi mit Archiv SQL Modul installiert. MySQL Datenbank läuft auf Windows 10 Rechner. Kann Variablen
    hinzufügen, die dann auch nach dem übernehmen angezeigt werden und die Daten werden ohne Probleme in die SQL
    Datenbank geschrieben.

  2. IP Symcon auf gleichem Windows Rechner wie die MySQL Datenbank. Hier werden keine Daten geschrieben. Es wird
    auch angezeigt das keine Verbindung zur SQL Datenbank besteht. Stoppe und starte ich den IP Symcon Dienst neu,
    dann wird angezeigt das eine Verbindung besteht. Wenn ich Variablen hinzufüge dann wird nur die ID angezeigt, die
    anderen Felder sind alle leer. Daten werden nicht geschrieben.

Hat hier vielleicht jemand eine Idee, woran das liegen kann? Bin über jeden Tipp sehr dankbar. Verzweifle hier noch kurz vor Ostern.

Liebe Grüße
Mike

Hat der MySQL-User eventuell kein Recht sich von Lokal anzumelden?
Steht etwas im Reiter Debug der Instanz?
Kommt nur keine Verbindung oder eine andere Meldung?
Hast du als Host eine IP-Adresse oder einen Hostnamen eingetragen?
Geht es mit der IP-Adresse?
Windows bevorzugt IPv6 bei Namensauflösung und wenn der MySQL-Server nicht auf IPv6 gebunden ist, kommt keine Verbindung zu Stande.
Gilt sinngemäß auch für die loopback-Adressen wie localhost, 127.0.0.1 und ::1
Michael

Der User hat rechte sich lokal als auch von einem anderen Rechner anzumelden

Steht etwas im Reiter Debug der Instanz?
Nein hier steht leider nichts drin

Kommt nur keine Verbindung oder eine andere Meldung?
Nein hier kommt keine Meldung. Wenn ich den Dienst neu starte, dann steht im Modul das er mit der Datenbank verbunden ist.

Hast du als Host eine IP-Adresse oder einen Hostnamen eingetragen?
Geht es mit der IP-Adresse?
Habe sowohl localhost als auch 127.0.0.1 als auch die IP-Adresse vom Win-Rechner wo die SQL Datenbank liegt getestet. Geht mit keinem. Es funktioniert nur, wenn ich vom Pi in die Datenbank schreibe. Wenn es vom Win Rechner kommt, klappt es nicht

Windows bevorzugt IPv6 bei Namensauflösung und wenn der MySQL-Server nicht auf IPv6 gebunden ist, kommt keine Verbindung zu Stande.
Habe kein IPv6 Netzwerk. Da ich die IP Adresse eingegben habe, sollte das eigentlich ja nicht das Problem sein.

Gilt sinngemäß auch für die loopback-Adressen wie localhost, 127.0.0.1 und ::1

Dann habe ich auch keine Idee mehr.

Zumal ich vor kurzen auf meinem Windows-IPS auch auf die 5.0 Beta gegangen bin und diese sich ebenfalls auf dem gleichen Rechner wie MySQL befindet.
Ich nutze jetzt somit auch localhost als Adresse und habe keine Probleme :confused:

Welche IPS Version nutzt du aktuell ?

Michael

MySQL: Version 5.7.21 (reine MySQL, kein xampp oder so)
Ip Symcon: 4.4 (letzte Version)

Verstehe das ganze auch nicht. Sitze schon den ganzen Tag dran. Auf dem Pi gleiche Einstellungen und es klappt ohne Probleme.

Und wenn du auf übernehmen klickst ist im Debug kein Eintrag? Unter Meldungen auch nicht?
Führe bitte mal in einem Script phpinfo() aus.
In der Ausgabe sollte eine Erweiterung mysqli auftauchen.

Können sich andere Dienste mit dem Server lokal verbinden?
Michael

Hallo,

habe dir mal Printscreens mit eingefügt.

  1. Printscreen: Daten eingegeben und übernehmen gedrückt. Datenbank nicht verbunden
  2. Printscreen: Dienst neugestartet und Daten eingegeben und übernehmen gedrückt. Da steht dann Datenbank verbunden.

Wenn ich phpInfo() im Skript ausführe finde ich kein mysqli dort. Daher gehe ich mal davon aus, das ich nicht mit der Datenbank verbunden bin.

Das einzigste was ich bei ausführen mit mysql finde ist folgendes:

mysqlnd

mysqlndenabled
Version mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b2… $
Compression supported
core SSL supported
extended SSL not supported
Command buffer size 4096
Read buffer size 32768
Read timeout 31536000
Collecting statistics Yes
Collecting memory statistics No
Tracing n/a
Loaded plugins mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password
API Extensions no value
mysqlnd statistics

Fehlt mir die mysqli auf dem Windows 10 Rechner? Habe die php_mysqli.dll aus dem folgenden Link http://windows.php.net/downloads/releases/archives/php-5.6.18-Win32-VC11-x86.zip in den Ordner ext kopiert und den Dienst neugestartet. Funktioniert leider immer noch nicht. Oder wie installiere ich die dll?

Gruß
Mike

Das mit der mysqli war der Hinweis. Hatte den Verdacht schon heute mittag gehabt. Hatte dann einen Freund gefragt, der mehr Ahnung von SQL hat als ich und der meinte das es daran nicht liegt.

Habe dann nach deinem Hinweis eben noch einmal im Forum gesucht und durch mehrere Posts einen weiteren Hinweis erhalten. Dadurch habe ich dann gerade gesehen, dass ich die falsche Version der dll installiert habe. War noch ne alte Version gewesen.

Habe nun diese heruntergeladen https://windows.php.net/downloads/releases/archives/php-5.6.32-nts-Win32-VC11-x64.zip

Und siehe da, es klappt alles.

Man, das da keine Meldung im Meldungsfenster oder sonstwo kommt verstehe ich nicht. Sucht man sich ja zum Affen. :slight_smile:

Trotzdem noch einmal vielen Dank für die schnelle Hilfe, das tolle Modul und den Hinweis mit dem mysqli und ebenfalls noch einmal Danke an das super Forum hier. Einfach nur Weltklasse.

Wünsche allen noch ein frohes Osterfest

Kann dann jetzt auch mal getrost zu Bett gehen, nachdem ich den ganzen Tag an dem Mist gehangen hab.

Gruß
Mike

Schön das es jetzt funktioniert.
Bin nun etwas unsicher, weil ich der Meinung war das IPS mit dieser Erweiterung ausgeliefert wird…
Michael

Anbindung läuft seit heute Nacht. Nö ist anscheinend leider nicht dabei, da ich das gerade frisch aufgesetzt habe und ip symcon ganz neu installiert habe. Ne Fehlermeldung wäre hilfreich gewesen.

Ich werde da eine Prüfung einbauen.
Bei Ubuntu und Pi ist sie jedenfalls ab Werk bei IPS dabei. SymBox wohl auch, Docker und Mac weiß ich nicht.
Michael

Ja das wäre super, falls andere ebenfalls Probleme haben. Aber was mich wundert, das die php_sqli.dll nicht bei der Installation dabei war.

Hallo zusammen,

ich habe das Modul eben mal getestet da ich mir auch einiges nach MySQL übergeben will.

Ich nutzte den MySQL Server MariaDB10 auf der Synology, Verbindung und Logging klappen super.

Jedoch loggt er die Variable doppelt wenn man z.B. einen Homematic Aktor schaltet.
Die Fenster-Variablen scheinen nur einmal geloggt zu werden.
Woran kann das liegen?

2018-05-25 06_09_05-MySQL Workbench.png

Schalte Mal nicht so schnell :wink:
Er loggt nicht doppelt sondern immer von-bis.
Michael

Hallo zusammen,

ich habe das Modul installiert und es verbindet sich auch mit einer externen Datenbank.
Nun meine Frage,

wie muß die Tabelle in der DB aussehen? Muß ich diese selbst anlegen oder geschieht das automatisch?

Viele Grüße

qinshi

Automatisch.
Sofern die Zugangsdaten und Berechtigungen stimmen.
Michael