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:
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.
Schön wenn es jemand gebrauchen kann
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
bin hier noch am verzweifeln an dem Modul.
Folgende Konstellation funktioniert bei mir ohne Probleme:
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.
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.
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
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
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
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.
Man, das da keine Meldung im Meldungsfenster oder sonstwo kommt verstehe ich nicht. Sucht man sich ja zum Affen.
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.
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
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?