[gelöst]Daten in MySql Datenbank schreiben

WebUIs (DashUI, yahui, ...), Adapter (Hue, IRTrans, Sonos, ...), Logging, Scripting

Moderator: Co-Administratoren

Antworten
Htrecksler
Beiträge: 116
Registriert: 20.04.2012, 12:02

[gelöst]Daten in MySql Datenbank schreiben

Beitrag von Htrecksler » 22.07.2014, 16:19

Hallo,

es gibt ja den MySql Adapter der Daten in eine MySql Datenbank schreibt.

Ist es auch möglich folgendes zu realisieren?
Die MySQL Datenbank läuft auf dem Raspi und die Datenbank inkl. der Tabellen ist auch schon vorhanden.
Die Datenbank heißt "Verbrauch" und in dieser Datenbank gibt es die Tabellen "Strom", "Gas", und "Wasser".
Alle 3 Tabellen haben die gleiche Struktur (Nummer, Datum, Uhrzeit, Zaehlerstand) (Nummer ist der Primary Key und hat die Eigenschaft "AUTO_INCREMENT"

Ich möchte jetzt folgendes erreichen:
In meiner View soll es drei editierbare Felder geben in denen jeweils der Zählerstand eingetragen wird. (Das krieg ich hin)
Dann soll es außerdem noch einen Button geben der dann für das Schreiben der eingegebenen Daten in die MySql Datenbank verantwortlich ist.
Also bei "Klick" ein Script ausführen.
Und genau bei diesem Script komme ich nicht weiter.

Kann mir jemand bei diesem Script helfen?
Also Verbinden mit der Datenbank und hinzufügen eines Datensatzes?

Schon mal Danke für Eure Hilfe und Gruss ins Forum
Hermann
Zuletzt geändert von Htrecksler am 31.07.2014, 14:09, insgesamt 1-mal geändert.

Htrecksler
Beiträge: 116
Registriert: 20.04.2012, 12:02

Re: Daten in MySql Datenbank schreiben

Beitrag von Htrecksler » 25.07.2014, 17:25

hat vielleicht jemand irgendeinen Hinweis für mich?

mri4mri
Beiträge: 21
Registriert: 28.07.2014, 10:25

Re: Daten in MySql Datenbank schreiben

Beitrag von mri4mri » 30.07.2014, 20:30

Hallo,

ich schreibe aktuell Temperaturen in ein File und in eine mysql Datenbank. dabei nutze ich den scripteditor innerhalb CCU.IO
---snip----
// Michael Richter
// 28.07.2014
//
// 100007 ist eine CCUIO Variable für die gespeicherte Aussentemp
// wir prüfen, ob sich ID 100007 geaendert hat
// wenn ja, dann in ein File bzw. in die mysql DB schreiben

subscribe({id: 100007, change: 'ne'}, function (obj) {
var data = getState(100007);
var data2 = getState(100008);
execCmd ('echo "' + (data) + '" >> /home/pi/data/wztemperatur.csv');
execCmd ('mysql -utemperaturen -ptemperaturen -DTemperaturen -e "INSERT INTO wztemp VALUES (NULL, CURRENT_TIMESTAMP,"' + (data2) + '");"');
});

---snip-----

Dazu habe ich in mysql die Datenbank Temperaturen angelegt und dort drin die Tabelle wztemp mit den Spalten index,time und wert. Index wird automatisch weiter geführt - deswegen der Wert NULL. Time wird mit dem aktuellen Zeitstempel gefüllt, wenn das Skript läuft. Wert mit "data2" und damit dem Wert der CCUIO Variable 100008 gefüllt.

Vielleicht hilft das ja weiter!

Viele Grüße
Micha

Htrecksler
Beiträge: 116
Registriert: 20.04.2012, 12:02

Re: Daten in MySql Datenbank schreiben

Beitrag von Htrecksler » 31.07.2014, 14:08

Hallo Micha,
DANKE für Deine Antwort.
Die letzten Tage habe ich mit Googeln und Try an Error verbracht. Ich war nahe am aufgeben dabei war ich schon richtig weit.
Den entscheidenden Hinweis habe ich dann durch Deine Antwort erhalten, auch wenn ich es nicht über den Scripteditor gelöst habe.
Das letzte Problem war, das er den Wert einer Variablen nicht in die Datenbank schreiben wollte. Jetzt funktioniert es genau wie ich es wollte.
Ich trage den Zählerstand ein, klicke auf den Button und in der MySQL Datenbank wird der Satz korrekt erzeugt.

Für alle die auch Suchen hier der Quellcode:

Code: Alles auswählen

var gMySqlStrom = 100011;
setObject(gMySqlStrom,{
    Name: "Skript.MySqlStrom",
	TypeName: "VARDP"
}, function () {
    setState(gMySqlStrom, false);
});

on(gMySqlStrom, function (obj) {
    if (obj.newState.value) {

       
       var mysql =     require('mysql');
       var value = getState(8179);
       var connection = mysql.createConnection({
           host     : 'localhost',
           user     : 'root',
           password : 'xxxxxxxx',
           database : 'Verbrauch' 
       });
       connection.connect();
       connection.query('SET NAMES "UTF8";');
	   
	   connection.query("INSERT INTO Strom (Zaehlerstand) VALUES (" + (value) + ");", function(err, rows, fields) {
           if (err) throw err;
           console.log(err, rows, fields);
       });

       connection.end();
       setState(gMySqlStrom, false);
    }
});
Nochmals Danke für die Rettung meines Tages.
Hermann

pstvoe
Beiträge: 16
Registriert: 31.01.2015, 17:50
Danksagung erhalten: 1 Mal

Re: [gelöst]Daten in MySql Datenbank schreiben

Beitrag von pstvoe » 13.06.2017, 14:05

Hallo,

diese zeile funktioniert bei mir nicht:

var mysql = require('mysql');

Fehlermeldung:
Error 1 at row 1 col 21 near ^('mysql');


Was mache ich falsch ?


Gruß & Danke vorab,
KNUT

Antworten

Zurück zu „CCU.IO“