Fröling: [ANNOUNCE] p4d - Visualisierung und Einstellung der S-3200 via COM1

Es gibt 4.961 Antworten in diesem Thema, welches 1.517.293 mal aufgerufen wurde. Der letzte Beitrag () ist von ranseyer.

  • Hallo @HolziHolziHolz,,


    ich kenne eure Anwendung nicht und weiß auch nicht ob ihr native SQL verwendet...
    Falls aber doch und der Datentyp der Spalte "name" ist "NVarchar", dann solltest du einmal den Präfix "N" vor dem Value ausprobieren.
    Link zum Beispiel.


    Viele Grüße von Karlheinz :)

    Seit Juni 2011:

    ETA Twin: SH30/P25 "noTouch" (Füllraum 150 Liter)

    Hopf Pelletaustragung: 6x UniWok-Saugsonden (Lager für 6 to)

    Paradigma Pufferspeicher: 2x Aqua Expresso (1090 + 958 Liter; seriell verbunden)

    Paradigma FrischWasserStation

    Paradigma VR-Solarpanel: 2x CPC21 Star Azzurro (10m²; Aqua-System ohne Glykol)

  • Hallo Horchi,


    ich bekomme dies hier zurückgeliefert:


    mysql> show create table valuefacts;


    +------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table | Create Table |


    +------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


    | valuefacts | CREATE TABLE `valuefacts` (
    `address` int(4) unsigned NOT NULL DEFAULT '0',
    `type` varchar(2) NOT NULL DEFAULT '',
    `inssp` int(10) DEFAULT NULL,
    `updsp` int(10) DEFAULT NULL,
    `state` varchar(1) DEFAULT NULL,
    `unit` varchar(5) DEFAULT NULL,
    `factor` int(4) DEFAULT NULL,
    `name` varchar(100) DEFAULT NULL,
    `title` varchar(100) DEFAULT NULL,
    `usrtitle` varchar(100) DEFAULT NULL,
    `res1` int(4) DEFAULT NULL,


    PRIMARY KEY (`address`,`type`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    +------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0,00 sec)


    Das passt meines Erachtens.


    Die von dir genannten Meldungen kann ich im syslog bislang nicht sehen.
    Das ist die komplette Ausgabe des Logs wenn ich die Werte über Setup --> Aufzeichnung --> Init initialisiere:


    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3e_0x1...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3e_0x1...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]
    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3e_0x1...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3e_0x1...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]
    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3entem...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3entem...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]
    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3entem...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3entem...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]
    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3entem...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3entem...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]
    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3entem...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3entem...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]
    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3entem...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3entem...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]
    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3entem...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3entem...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]
    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3entem...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3entem...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]
    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3entem...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3entem...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]
    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3entem...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3entem...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]
    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3entem...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3entem...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]
    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3entem...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3entem...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]
    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3entem...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3entem...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]
    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3entem...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3entem...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]
    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3entem...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3entem...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]
    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3entem...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3entem...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]
    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3entem...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3entem...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]
    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3entem...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3entem...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]
    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3entem...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3entem...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]
    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3entem...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3entem...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]
    ?


    In der angezeigten Liste fehlt dann eben auch der Wert für 4/VA.
    Wenn ich die Valueliste ausgeben lasse und nach der Außentemperatur greppe, bekomme ich die Adresse zurückgeliefert, sollte also tatsächlich 4/VA sein.


    linux-p5vn:~ # p4 values -d /dev/ttyUSB0 | grep -i Auß


    85) 0x0004 2 '' (0002) 'Außentemperatur'
    156) 0x0004 2 '' (0002) 'Außentemperatur'
    161) 0x0004 2 '' (0002) 'Außentemperatur'
    166) 0x0004 2 '' (0002) 'Außentemperatur'
    171) 0x0004 2 '' (0002) 'Außentemperatur'
    176) 0x0004 2 '' (0002) 'Außentemperatur'
    181) 0x0004 2 '' (0002) 'Außentemperatur'
    186) 0x0004 2 '' (0002) 'Außentemperatur'
    191) 0x0004 2 '' (0002) 'Außentemperatur'
    196) 0x0004 2 '' (0002) 'Außentemperatur'
    201) 0x0004 2 '' (0002) 'Außentemperatur'
    206) 0x0004 2 '' (0002) 'Außentemperatur'
    211) 0x0004 2 '' (0002) 'Außentemperatur'
    216) 0x0004 2 '' (0002) 'Außentemperatur'
    221) 0x0004 2 '' (0002) 'Außentemperatur'
    226) 0x0004 2 '' (0002) 'Außentemperatur'
    231) 0x0004 2 '' (0002) 'Außentemperatur'
    236) 0x0004 2 '' (0002) 'Außentemperatur'
    241) 0x0004 2 '' (0002) 'Außentemperatur'


    Hast du sonst noch eine Idee, was ich prüfen könnte?


    Danke und Grüße
    Holzi


  • CREATE TABLE `valuefacts` (
    ...


    `name` varchar(100) DEFAULT NULL,
    ...

    ... ein Versuch noch, dann geb' ich Ruhe :saint:


    Eine Unicode-Datenbank braucht Unicode-Spalten:
    Z.Bsp. Nvarchar...


    Viele Grüße von Karlheinz :)

    Seit Juni 2011:

    ETA Twin: SH30/P25 "noTouch" (Füllraum 150 Liter)

    Hopf Pelletaustragung: 6x UniWok-Saugsonden (Lager für 6 to)

    Paradigma Pufferspeicher: 2x Aqua Expresso (1090 + 958 Liter; seriell verbunden)

    Paradigma FrischWasserStation

    Paradigma VR-Solarpanel: 2x CPC21 Star Azzurro (10m²; Aqua-System ohne Glykol)

  • ich verwende dafür immer varchar, klappt, soweit ich mir erinnerr (hab jetzt nicht mehr nachgelesen) hat das nicjht mit der Character Darstellung und encoding zu tun sondern mit der Größe des Feldes, nvarchar(100) kann mehr als 100 bytes um auch Platz für Multibyte Zeichen vorzuhalten. Also solange name und title nicht mehr als 100 bytes benötigen passt es. Sofern größer wird er abgeschnitten.


    Hier sieht es so aus:

    Code
    MariaDB [p4]> select title from valuefacts where title like 'Außentempera%' limit 50;
    +------------------+
    | title            |
    +------------------+
    | Außentemperatur  |
    +------------------+
    1 row in set (0.00 sec)

    Seit Oktober 2009:
    Fröling P4 mit 1000l Pufferspeicher

  • ... ein Versuch noch, dann geb' ich Ruhe :saint:
    Eine Unicode-Datenbank braucht Unicode-Spalten:
    Z.Bsp. Nvarchar...

    Hallo Karlheinz,


    ich habe dies eben mit dem Befehl
    ALTER TABLE `p4`.`valuefacts`
    CHANGE COLUMN `name` `name` NVARCHAR(100) NULL DEFAULT NULL ;


    anpassen wollen. Wenn ich mir danach die Tabelle ansehe, habe ich wieder den Typ VARCHAR.


    Geändert hat sich das Verhalten leider auch nicht, 4/VA fehlt nach dem Init immer noch.


    Trotzdem danke!

  • Hallo Gemeinde,
    ich bin gerade dabei das p4d zu Installieren, bin aber absoluter Linux laie :(


    Ich habe bereits erfplgreich Stretch installiert und bin gerade dabei die Befehle von der github horchi Seite einzugeben, aber es scheitert schon gleich am Anfang bei dem Befehl:
    apt-get install mysql-server-5.5 libmysqlclient-dev
    den gibt es wohl nicht mehr.
    Hier im Forum habe ich dann folgenden Befehl gefunden: apt install apache2 phpmyadmin


    Der Funktioniert dann aber beim Einrichten der Datenbank erscheint die Fehlermeldung das eine Verbindung zur Datenbank nicht möglich ist.



    Ich habe das jetzt bereits zum 5. mal probiert aber immer das gleiche Problem.


    Kann mir bitte jemand sagen was ich hier falsch mache.



    Vielen Dank

  • Das ist der interessante Teil der Ausgabe:



    -> 02 FD 00 01 32 54 ....2T
    <- 02 FD 00 1A 31 01 00 02 00 00 02 00 00 B0 00 04 41 75 DF 65 6E 74 65 6D 70 65 72 61 74 75 72 00 98 ....1...........Au.entemperatur..
    85) 0x0004 2 '' (0002) 'Außentemperatur'
    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3entem...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3entem...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]

  • mein Fehler, das ist der Client libmariadbclient-dev, also:
    apt-get install libmariadbclient-dev
    libmariadb-dev wird vermutlich nicht benötigt stört aber nicht.


    Hintergrund der anderen Packete als im README ist das bei stretch mariadb (der offene mysql clone) enthalten ist statt mysql.

    Seit Oktober 2009:
    Fröling P4 mit 1000l Pufferspeicher

  • mach es doch nochmal mit diesem Patch, in der Debug Ausgabe ist leider der 'name' nicht enthalten

    Seit Oktober 2009:
    Fröling P4 mit 1000l Pufferspeicher

  • Hallo Horchi,


    ich habe nun die beiden Zeile in der p4d.c ausgetauscht und dann mittels
    make clean all && make installneu übersetzt.Ich sehe nun die folgenden Zeilen im Log:-> 02 FD 00 01 32 54 ....2T
    <- 02 FD 00 1A 31 01 00 02 00 00 02 00 00 B0 00 04 41 75 DF 65 6E 74 65 6D 70 65 72 61 74 75 72 00 98 ....1...........Au.entemperatur..
    85) 0x0004 'Au▒entemperatur_0x4' 2 '' (0002) 'Außentemperatur'
    SQL-Error in 'execute(stmt_execute)' - Incorrect string value: '\xC3entem...' for column 'name' at row 1 (1366) 'Incorrect string value: '\xC3entem...' for column 'name' at row 1' [insert into valuefacts set address = ?, factor = ?, inssp = ?, name = ?, res1 = ?, state = ?, title = ?, type = ?, unit = ?, updsp = ?, usrtitle = ?;]




    Danke und Grüße
    Holzi

  • der Name wird aus der 'description' gebaut indem alle Zeichen außer abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789äöüÄÖÜ_- entfernt werden und die Addresse mit '_0x' als Trenner hinzugefügt wird, Hintergrund der soll nicht schön aussehen (dafür ist title) sondern zum identifizieren dienen.


    da geht m.E was beim Zeichen entfernrn schief, da scheint mein Code nicht UTF bzw. Multi Character Symbol fest zu sein worduch wohl ein (oder zwei byte) eines Multi Char Bytes übrig bleiben und damit kaputt sind.


    Prüfe doch bitte noch mit dem file Kommando ob das encodeing der Quellcode Dateien bei dir stimmt:


    die service.c ist dabei die wichtigste.

    Seit Oktober 2009:
    Fröling P4 mit 1000l Pufferspeicher

  • Das scheint bei mir zu passen:


    linux-p5vn:/usr/src/linux-p4d # file *.h *.c
    HISTORY.h: UTF-8 Unicode text
    p4d.h: C++ source, UTF-8 Unicode text
    p4io.h: C++ source, UTF-8 Unicode text
    service.h: C++ source, UTF-8 Unicode text
    w1.h: C++ source, UTF-8 Unicode text
    c2tst.c: C source, ASCII text
    chart.c: C source, UTF-8 Unicode text
    main.c: C source, UTF-8 Unicode text
    p4cmd.c: C source, UTF-8 Unicode text
    p4d.c: C source, UTF-8 Unicode text
    p4io.c: C source, UTF-8 Unicode text
    service.c: C source, UTF-8 Unicode text
    w1.c: C source, UTF-8 Unicode text
    webif.c: C source, UTF-8 Unicode text

  • ich passe das mal an, es müssen keine Zeichen entfernt werden, das erstezten des Blank gegen '_' nebst anhängen der Adresse sollte genügen.


    Wechsle bitte schon mal auf den 'dev' Branch, dort ich mache das gleich.


    Branch wechseln:

    • in den SOurce Ordner gehen
    • git pull
    • git checkout dev

    dannn damit es baut diese Zeile MQTTINTERFACE = yes in Make.config auskommentieren. Da bereite ich gerade die direkte Anbindung (ohne Skript Umweg) an Home Assistant via MQTT vor.


    Wenn das soweit compiliert warte dann noch kurz auf meine Anüpassung gleich.

    Seit Oktober 2009:
    Fröling P4 mit 1000l Pufferspeicher

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!