+ Antworten
Seite 2 von 3 ErsteErste 1 2 3 LetzteLetzte
Ergebnis 11 bis 20 von 26
  1. #11
    Registriert seit
    Apr 2009
    Ort
    Franken
    Beiträge
    615

    Zitat Zitat von thezepter Beitrag anzeigen
    ... Es liegt am Modul "Nall-chan/IPSMySQLArchiv" <--- deaktiviert und alles rennt wieder. Schade......
    Hi thezepter,

    alleine am IPSMySQLArchiv-Modul sollte es nicht liegen. Bei mir läuft seit heute Grafana mit MySQL im Testbetrieb (Screenshot meiner Heizung weiter unten) ohne Probleme (sewo, danke für den Tip mit ID/Value). Meine aktuelle Konfiguration ist aber eine etwas andere, ist nur eine Spielwiese bei der ich die Teilkomponenten auf einer HW vereinigen will/muss.

    • Ein Raspberry 3 sammelt die Daten der Sensoren mit IP Symcon 5 ein und schreibt sie mit IPSMySQLArchiv in eine MySQL DB
    • Die MySQL DB liegt physikalisch auf einer QNAP
    • Grafana wiederum läuft auf einem ASUS TinkerS und holt sich die Daten von der QNAP

    Der Raspberry 3 schreibt so aktuell um die 30 Variablen in die MySQL DB und die CPU Load ist seit dem Einrichten des Moduls kaum merklich nach oben gegangen. Wobei bei mir kein Sensor im Sekundentakt abgefragt wird.

    Gruss
    Bernd

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Grafana.jpg 
Hits:	164 
Größe:	53.0 KB 
ID:	47287
    Geändert von icey (12.01.19 um 14:51 Uhr)

  2. #12
    Registriert seit
    Feb 2011
    Beiträge
    627

    Jo, habs gerade bei nem Kumpel probiert der noch mehr wegschreibt an Variablen und da läuft symcon auf dem PI3+ und SQL auf der synology.

    EDIT:

    Liegt nicht am Docker oder Raspi und auch nicht an meinem symcon. Hab gerade ein jungfräuliches Symcon ohne alles auf einem Pi laufen lassen... Auch eine andere Datenbank auf der Diskstaion bringt keine Abhilfe....... selbes Problem.
    Geändert von thezepter (12.01.19 um 22:20 Uhr)
    IPS 5.0 @ Synology Docker DS916+ / RaspBerryMatic / influxDB / Grafana / ipsView / Sonos / PhilipsHue / Z-Wave / IP-Cams / Ubiquity / Amazon Echo

  3. #13
    Registriert seit
    Aug 2017
    Ort
    Schorndorf
    Beiträge
    26

    Danke erstmal für die Super Idee mit Grafana und das Beispiel!

    ich hab das ganze mal in ne Funktion zum copy und pasten gepackt.
    Für n Modul fehlt mir einfach die Kenntnis.

    Ich denk mal es ist selbsterklärend und basiert auf dem Beispiel von thezepter

    Grafana und die InfluxDb laufen bei mir auf einem Viruellen Ubuntu.
    Wer hier hilfe beim einrichten braucht, darf sich gerne melden.

    PHP-Code:
    /*Write2InfluxDb by SCS-Showtec GbR
    Basierend auf Idee und Beispiel von "thezepter"
    Jakob-Degen-Straße 64
    73614 Schorndorf
     Autor :Johannes Holzwarth
    Verison 1.1 21.02.2019*/ 

    function Write2Influx($id$host$db$system$category$valuename)
    {
    $out ='http://'.$host.':8086/write?db='.$db.'';
     

    $ch curl_init($out);
     
    curl_setopt($chCURLOPT_RETURNTRANSFER);
    curl_setopt($chCURLOPT_POST,           );

    $vartype IPS_GetVariable($id)['VariableType'];
    /*0: Boolean, 1: Integer, 2: Float, 3: String*/
    //echo $vartype.' ';
    switch ($vartype){

    case 
    0:
    $value GetValueBoolean($id) ;
    if (
    $value == true){
    curl_setopt($chCURLOPT_POSTFIELDS,     $system.','.$category.'='.$valuename.' value=1');
    }
    else{
    curl_setopt($chCURLOPT_POSTFIELDS,     $system.','.$category.'='.$valuename.' value=0');
    }
    //echo 'es war ein bool ';
    break;

    case 
    1:
    $value GetValueInteger($id) ;
    curl_setopt($chCURLOPT_POSTFIELDS,     $system.','.$category.'='.$valuename.' value=' .$value);
    break;

    case 
    2:
    $value GetValueFloat($id) ;
    curl_setopt($chCURLOPT_POSTFIELDS,     $system.','.$category.'='.$valuename.' value=' .  number_format($value/1,1,'.','') );
    //echo 'es war ein float ';
    break;

    }

     
    $result=curl_exec ($ch);
    $error=curl_error($ch) ;
     
    echo 
    $result ;
    echo 
    $error ;
    //echo $system.','.$category.'='.$valuename.' value=' .  number_format($floatvalue/1,1,'.','');
    }

    $host 'xxx.xxx.xxx.xxx';
    Write2Influx(123456$host'werte''Heizung''HeizkreisUg''Vorlauf'); // kopieren und die Bezeichnungen den eigenen Bedürfnissen und Werten anpassen 
    Geändert von ScsShowtec (21.02.19 um 15:35 Uhr) Grund: Fehlerhaftes Skript
    Symcon 5.0 Unlimited | pfSense community Edition | 3x Wago 750-841 2x 750-881 1x 758-870 3x 750-8202 1x 750-842 1x 750-830 | 2x Siemens LOGO! 8 | Codesys 3 Runtime on Raspberry | Buderus Km100

  4. #14
    Registriert seit
    Feb 2011
    Beiträge
    627

    Zitat Zitat von ScsShowtec Beitrag anzeigen
    ich hab das ganze mal in ne Funktion zum copy und pasten gepackt.
    Für n Modul fehlt mir einfach die Kenntnis.
    Danke Dir ! Da meine Synology mit SQL gerade extreme Probleme macht, kommt mir das natürlich recht
    Wenn da noch jemand ein Modul draus macht wo man per Auswahl die Variablen hinzufügen könnte und die Beschreibungen der Felder wäre das richtig nice
    IPS 5.0 @ Synology Docker DS916+ / RaspBerryMatic / influxDB / Grafana / ipsView / Sonos / PhilipsHue / Z-Wave / IP-Cams / Ubiquity / Amazon Echo

  5. #15
    Registriert seit
    Aug 2017
    Ort
    Schorndorf
    Beiträge
    26

    Aber gerne doch. Ich sollte mir das Wissen übers Module bauen echt mal aneignen... Aber ohne dass mir das jemand zeigt blick ich das nur schwer. Mit nachlesen usw. vergeht mir bei sowas immer schnell die Lust wenns nicht zu nem Erfolg führt. Ich hau euch noch n paar Screenshots als Motivation um die Ohren
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	GrafanaLueftung.PNG 
Hits:	101 
Größe:	74.5 KB 
ID:	47322   Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	GrafanaZaehler.PNG 
Hits:	104 
Größe:	96.6 KB 
ID:	47323  
    Symcon 5.0 Unlimited | pfSense community Edition | 3x Wago 750-841 2x 750-881 1x 758-870 3x 750-8202 1x 750-842 1x 750-830 | 2x Siemens LOGO! 8 | Codesys 3 Runtime on Raspberry | Buderus Km100

  6. #16
    Registriert seit
    Apr 2017
    Beiträge
    692

    Sehr spannendes Thema, vielen Dank!
    IPS 5.0 (no update, please), KNX-TP, KNX-RF

  7. #17
    Registriert seit
    Feb 2011
    Beiträge
    627

    @ScsShowtec <--- wie oft triggerst du das Script ? Schreibst du alles in eine Datenbank oder teilst du das auf ?

    Hab es gerade mal mit ca 25 Variablen ausprobiert... Die Scriptlaufzeit leigt zwischen 4 und 10 Sekunden... Puhh das ist mir zu lange wenn man "live" Daten sehen möchte. Kann man das irgendwie so programmieren, dass sich nur jede geänderte hinterlegte Variable in die Datenbank schreibt ? und ich auch dann fast live Daten angezeigt bekomme ? Das wiederum geht wahrscheinlich nur mit einem Modul oder ?
    Geändert von thezepter (14.01.19 um 14:35 Uhr)
    IPS 5.0 @ Synology Docker DS916+ / RaspBerryMatic / influxDB / Grafana / ipsView / Sonos / PhilipsHue / Z-Wave / IP-Cams / Ubiquity / Amazon Echo

  8. #18
    Registriert seit
    Aug 2017
    Ort
    Schorndorf
    Beiträge
    26

    Irgend etwas scheint bei dir nicht zu stimmen. Ich habe 52 Variablen die ich wegschreibe. Ich trigger das Skript alle 10 Sekunden und die Lauftzeit beträgt bei mir 140ms.
    Sorry das ich so "blöd" frage aber du hast die Funktion an sich scho nur einmal oben stehen und nicht für jede Variable mitkopiert?
    Sei mir bitte nicht böse aber ich frage so dumm weil du ein paar einträge früher erwähnst dass du im Programmieren nicht so fit bist
    Ich kopier dir hier mal mein aktuell so laufendes Skript, mit etwas weniger Funktionsaufrufen, rein...

    Falls du eine Variable bei änderung schreiben willst, musst du die Funktion in ein extra Skript packen und jedes mal das Skript mit der enthaltenen Funkition mit require einbinden. Das Skript in dem du die Funktion wiederum aufrufst, triggerst du dann bei änderung. Falls es probleme gibt --> gerne PN

    So muss das aussehn:

    PHP-Code:
    /*EINMAL DIE FUNKTION*/
    function Write2Influx($id$host$db$system$category$valuename)
    {
    $out ='http://'.$host.':8086/write?db='.$db.'';
     

    $ch curl_init($out);
     
    curl_setopt($chCURLOPT_RETURNTRANSFER);
    curl_setopt($chCURLOPT_POST,           );

    $vartype IPS_GetVariableCompatibility($id)['VariableType'];
    /*0: Boolean, 1: Integer, 2: Float, 3: String*/
    //echo $vartype.' ';
    switch ($vartype){

    case 
    0:
    $value GetValueBoolean($id) ;
    if (
    $value == true){
    curl_setopt($chCURLOPT_POSTFIELDS,     $system.','.$category.'='.$valuename.' value=1');
    }
    else{
    curl_setopt($chCURLOPT_POSTFIELDS,     $system.','.$category.'='.$valuename.' value=0');
    }
    //echo 'es war ein bool ';
    break;

    case 
    1:
    $value GetValueInteger($id) ;
    curl_setopt($chCURLOPT_POSTFIELDS,     $system.','.$category.'='.$valuename.' value=' .$value);
    break;

    case 
    2:
    $value GetValueFloat($id) ;
    curl_setopt($chCURLOPT_POSTFIELDS,     $system.','.$category.'='.$valuename.' value=' .  number_format($value/1,1,'.','') );
    //echo 'es war ein float ';
    break;

    }

     
    $result=curl_exec ($ch);
    $error=curl_error($ch) ;
     
    echo 
    $result ;
    echo 
    $error ;
    //echo $system.','.$category.'='.$valuename.' value=' .  number_format($floatvalue/1,1,'.','');
    }
    /*AB HIER ERST KOPIEREN*/
    $host '192.168.23.222';
    Write2Influx(49082 /*[Heizung\Dp\Vorlauftemperatur Heizkreis Ug\Vorlauftemperatur]*/$host'werte''Heizung''HeizkreisUg''Vorlauf');
    Write2Influx(51821 /*[Heizung\Dp\Vorlauftemperatur Kessel\Vorlauftemperatur Kessel]*/$host'werte''Heizung''Kessel''Vorlauftemp');
    Write2Influx(39940 /*[Heizung\Dp\Rücklauftemperatur Heizkreis Ug\Rücklauftemperatur]*/$host'werte''Heizung''HeizkreisUg''Ruecklauf');
    Write2Influx(30510 /*[Heizung\Dp\Rücklauftemperatur Kessel\Rücklauftemperatur Kessel]*/$host'werte''Heizung''Kessel''RuecklaufKessel');
    Write2Influx(45963 /*[Heizung\Dp\Sollwert Kessel\Sollwert Kessel]*/$host'werte''Heizung''Kessel''SollwertLeistung');
    Write2Influx(32535 /*[Heizung\Dp\Kessel Vorlauf errechnet\Kessel Vorlauf errechnet]*/$host'werte''Heizung''Kessel''TempErrechnet');
    Write2Influx(29715 /*[Allgemein\Aussentemperatur\Aut]*/$host'werte''Allgemein''Temperaturen''Aut');

    Write2Influx(53604 /*[UG\Partyraum\Lüftung\Istwerte\Ist1\Zuluft\Leistung]*/$host'werte''Ug''Lueftung''SollwertZuluftventilator');
    Write2Influx(24929 /*[UG\Partyraum\Lüftung\Istwerte\Ist2\Regeln\Wrg Sollwert]*/$host'werte''Ug''Lueftung''SollwertWrg');
    Write2Influx(12812 /*[UG\Partyraum\Lüftung\Regelventil\Sollwert]*/$host'werte''Ug''Lueftung''SollwertRegelventil');
    Write2Influx(23447 /*[UG\Partyraum\Lüftung\Zulufttemperatur\Temperatur]*/$host'werte''Ug''Lueftung''Zulufttemp'); 
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	konsole.PNG 
Hits:	80 
Größe:	42.7 KB 
ID:	47324
    Symcon 5.0 Unlimited | pfSense community Edition | 3x Wago 750-841 2x 750-881 1x 758-870 3x 750-8202 1x 750-842 1x 750-830 | 2x Siemens LOGO! 8 | Codesys 3 Runtime on Raspberry | Buderus Km100

  9. #19
    Registriert seit
    Feb 2011
    Beiträge
    627

    Ok, dann liegt es an meiner Diskstation und dem ausgelastetem Volume... total nervig :-(

    PHP-Code:
    <?

    /*Write2InfluxDb by SCS-Showtec GbR 
    Basierend auf Idee und Beispiel von "thezepter" 
    Jakob-Degen-Straße 64 
    73614 Schorndorf 
     Autor :Johannes Holzwarth 
    Verison 1.0 13.01.2019*/  

    function Write2Influx($id$host$db$system$category$valuename

    $out ='http://'.$host.':8086/write?db='.$db.''
      

    $ch curl_init($out); 
      
    curl_setopt($chCURLOPT_RETURNTRANSFER); 
    curl_setopt($chCURLOPT_POST,           ); 

    $vartype IPS_GetVariableCompatibility($id)['VariableType']; 
    /*0: Boolean, 1: Integer, 2: Float, 3: String*/ 
    echo $vartype.' '
    switch (
    $vartype){ 

    case 
    0
    $value GetValueBoolean($id) ; 
    if (
    $value == true){ 
    curl_setopt($chCURLOPT_POSTFIELDS,     $system.','.$category.'='.$valuename.' value=1'); 

    else{ 
    curl_setopt($chCURLOPT_POSTFIELDS,     $system.','.$category.'='.$valuename.' value=0'); 

    echo 
    'es war ein bool '
    break; 

    case 
    1
    $value GetValueInteger($id) ; 
    curl_setopt($chCURLOPT_POSTFIELDS,     $system.','.$category.'='.$valuename.' value=' .$value); 
    break; 

    case 
    2
    $value GetValueFloat($id) ; 
    curl_setopt($chCURLOPT_POSTFIELDS,     $system.','.$category.'='.$valuename.' value=' .  number_format($value/1,1,'.','') ); 
    echo 
    'es war ein float '
    break; 



      
    $result=curl_exec ($ch); 
    $error=curl_error($ch) ; 
      
    echo 
    $result 
    echo 
    $error 


    $host '192.168.2.2'
    Write2Influx(28645 /*[PHP_Module\SMA\Sunny Island 8.0H\selbstauslesen\Betriebszustand\Wert]*/$host'symcon''pv''sunnyisland''betriebszustand'); // kopieren und die Bezeichnungen den eigenen Bedürfnissen und Werten anpassen  
    Write2Influx(39535 /*[PHP_Module\SMA\Sunny Island 8.0H\selbstauslesen\Abgegebene Leistung Batterie Gesamt\Wert]*/$host'symcon''pv''sunnyisland''abgabegesamt');
    Write2Influx(43920 /*[PHP_Module\SMA\Sunny Island 8.0H\selbstauslesen\Aktuelle Kapazität SOC\Wert]*/$host'symcon''pv''sunnyisland''soc');
    Write2Influx(48435 /*[PHP_Module\SMA\Sunny Island 8.0H\selbstauslesen\Aktuelle Kapazität SOH\Wert]*/$host'symcon''pv''sunnyisland''soh');
    Write2Influx(38129 /*[PHP_Module\SMA\Sunny Island 8.0H\selbstauslesen\Anzahl Volladungen\Wert]*/$host'symcon''pv''sunnyisland''anzahlvolladungen');
    Write2Influx(42708 /*[PHP_Module\SMA\Sunny Island 8.0H\selbstauslesen\Aufgenommene Leistung Batterie Gesamt\Wert]*/$host'symcon''pv''sunnyisland''aufnahmegesamt');
    Write2Influx(13982 /*[PHP_Module\SMA\Sunny Island 8.0H\selbstauslesen\Batterieladung (-) Entladung (+) Leistung\Wert]*/$host'symcon''pv''sunnyisland''ladenentladen_W');
    Write2Influx(15014 /*[PHP_Module\SMA\Sunny Island 8.0H\selbstauslesen\Batterieladung (-) Entladung (+) Strom\Wert]*/$host'symcon''pv''sunnyisland''ladenentladen_A');
    Write2Influx(28490 /*[PHP_Module\SMA\Sunny Island 8.0H\selbstauslesen\Battery state of charge for protection mode\Wert]*/$host'symcon''pv''sunnyisland''socschutz');
    Write2Influx(52646 /*[PHP_Module\SMA\Sunny Island 8.0H\selbstauslesen\Energiesparmodus aktiviert (1129=Yes  1130=No)\Wert]*/$host'symcon''pv''sunnyisland''powersafemode');
    Write2Influx(18721 /*[PHP_Module\SMA\Sunny Island 8.0H\selbstauslesen\Fehler Ladezustand\Wert]*/$host'symcon''pv''sunnyisland''socfehler');
    Write2Influx(59083 /*[PHP_Module\SMA\Sunny Island 8.0H\selbstauslesen\Nennkapazitätsdurchsätze\Wert]*/$host'symcon''pv''sunnyisland''anzahlladungsdurchs');
    Write2Influx(24323 /*[PHP_Module\SMA\Sunny Island 8.0H\selbstauslesen\Obere Kapzitätsgrenze für Wiedereinspeisung\Wert]*/$host'symcon''pv''sunnyisland''oberesocgrenzechargein');
    Write2Influx(42655 /*[PHP_Module\SMA\Sunny Island 8.0H\selbstauslesen\Untere Kapzitätsgrenze für Einspeisesperre\Wert]*/$host'symcon''pv''sunnyisland''unteresocgrenzechargestop');
    Write2Influx(39691 /*[PHP_Module\SMA\Sunny Island 8.0H\selbstauslesen\Untere Entladegrenze für Eigenverbrauchsbereich\Wert]*/$host'symcon''pv''sunnyisland''minselfdischarg');
    Write2Influx(36215 /*[PHP_Module\SMA\Sunny Island 8.0H\selbstauslesen\Zeit bis zur nächsten Ausgleichsladung\Wert]*/$host'symcon''pv''sunnyisland''zeitbisausgleichsla');
    Write2Influx(39414 /*[PHP_Module\SMA\Sunny Island 8.0H\selbstauslesen\Zeit bis zur nächsten Vollladung\Wert]*/$host'symcon''pv''sunnyisland''zeitbisvolla');
    Write2Influx(26603 /*[PHP_Module\SMA\Sunny Island 8.0H\Netzfrequenz]*/$host'symcon''pv''sunnyisland''netzfrequenz');
    Write2Influx(17718 /*[PHP_Module\SMA\Sunny Island 8.0H\Netzspannung L1 gegen N]*/$host'symcon''pv''sunnyisland''netzspannung');
    Write2Influx(28063 /*[PHP_Module\SMA\Sunny Island 8.0H\Batterietemperatur]*/$host'symcon''pv''sunnyisland''batttemp');
    Write2Influx(57296 /*[PHP_Module\SMA\Sunny Island 8.0H\Batteriespannung]*/$host'symcon''pv''sunnyisland''battspannung');
    Write2Influx(35685 /*[PHP_Module\SMA\Sunny Island 8.0H\Zustand Wartungsladung der Batterie]*/$host'symcon''pv''sunnyisland''zustwartladung');


    ?>
    Laufzeit... 23 Sekunden ! Ich KOTZ ab... Ich vermute es liegt am btrfs Dateisystem... hätte damals ext4 nehmen sollen :-(

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	hmmmmm.JPG 
Hits:	58 
Größe:	54.8 KB 
ID:	47326
    IPS 5.0 @ Synology Docker DS916+ / RaspBerryMatic / influxDB / Grafana / ipsView / Sonos / PhilipsHue / Z-Wave / IP-Cams / Ubiquity / Amazon Echo

  10. #20
    Registriert seit
    Aug 2017
    Ort
    Schorndorf
    Beiträge
    26

    Scheint wohl so. Hast n Raspb oder so über auf dem du ne Testdatenbank erstellen kannst?

    Es darf mich gern jmd verbessern aber soweit ich weiss kann es durchaus an deinem Dateisystem liegen.
    ext4 ist laut meinem Kenntnisstand "langsamer" als btrfs bzw. letzteres verlangt mehr Cpu Leistung.

    Ich weiss nicht mein genaues Dateisystem aber ich denke es ist auch ext4.
    System ist bei mir n virtuelles Ubuntu Server 16.04LTS mit 4gb Ram.
    Symcon 5.0 Unlimited | pfSense community Edition | 3x Wago 750-841 2x 750-881 1x 758-870 3x 750-8202 1x 750-842 1x 750-830 | 2x Siemens LOGO! 8 | Codesys 3 Runtime on Raspberry | Buderus Km100

Ähnliche Themen

  1. IPSView FAQ und Howto's
    Von Brownson im Forum IPSStudio & IPSView
    Antworten: 34
    Letzter Beitrag: 14.08.19, 15:23
  2. Howto: RaZberry mit IP-Symcon
    Von wupperi im Forum Z-Wave
    Antworten: 74
    Letzter Beitrag: 30.07.19, 15:59
  3. HowTo - SML-Stromzähler mit IPS Auslesen
    Von mr_cg im Forum Haustechnik
    Antworten: 59
    Letzter Beitrag: 01.03.19, 22:31
  4. Grafana / wie Charts realisieren?
    Von disaster123 im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 12
    Letzter Beitrag: 10.01.19, 10:57
  5. SQLite DB Design analyse
    Von zorax9b im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 0
    Letzter Beitrag: 29.12.09, 21:55