Keden92

Erstellte Forenantworten

15 Beiträge anzeigen - 1 bis 15 (von insgesamt 19)
  • Autor
    Beiträge
  • als Antwort auf: Meine eigene Version von LogoControl #4076
    Keden92
    Teilnehmer

    Hallo Reinhard,

    grundsätzlich ja, gibt nur ein paar kleinere Einschränkungen:

    1. ich hatte das Projekt seit gefühlt einem Jahr nicht mehr auf, keine ahnung wie „global kompatibel“ bzw. individuell umprogrammiert das mittlerweile ist, vermutlich wird meine kompilierte Version nicht ohne weiteres „einfach so“ laufen.

    2. ich betreibe LogoControl nicht (mehr) auf einem RPi. meine Version ist in für x86 Kompiliert. (wird vermutlich auf RPi [arm] nicht ohne neukompilierung laufen).

    Was für Fehler / Probleme bestehen denn bei dir genau? (Grund für diese „Anfrage“) – Es wird wahrscheinlich ein vielfaches einfacher sein, wenn ich einfach nur per Strg+C/V die entsprechenden Änderungen hier ins Forum Poste, und du selber Kompilierst.

    Kurze Anleitung: http://www.frickelzeugs.de/forums/topic/logo-control-startet-nicht/#post-3936

    VG Keden92

    als Antwort auf: Zuverlässigkeit Trigger #4074
    Keden92
    Teilnehmer

    Hallo Loulli,

    Ich fasse mal kurz zusammen: Nein, Leistungsgrenze sollte dies nicht sein, jedoch kenne ich dein programm nicht. — Zu beachten wäre hier der Grenzwert von 20-Gruppen je Logo. Siehe hierzu Antwort zu: Begrenzung „word“ Werte

    Interessant wäre hier die Aktualisierungs-Rate, die dein Pi zustande bringt. (eigentlich sollte dies mit 4mal/sekunde -> 250ms passieren.)

    Baue mal folgendes auf / ein:

    Wenn dein Impuls / Signal kommt, einen RS Setzen und über einen Netzwerk-Input rücksetzen. Dieser Rücksetzaufruf wird über deinen „pluviometer.sh“ veranlasst. – Somit sollte das „nicht-zählen“ nicht mehr vorkommen. – Zusätzlich zur Analyse, eine Zeitmessung am Ausgang des RS durchführten um zu schauen wie lange dieser Zyklus in Anspruch nimmt. Sollte in der Theorie bei <= 250ms liegen. Sollte dieser wesentlich größer sein (>0,5s), dann wäre die nächste Frage: wo hängt dein RPi CPU-Technich? Was läuft da sonst noch drauf?

    VG Keden92

    als Antwort auf: Meine eigene Version von LogoControl #4049
    Keden92
    Teilnehmer

    Hallo @msigma,

    Ich habe diese im Projekt implementiert, sodass die Werte direkt nach dem diese von der Logo geliefert werden, weggeschrieben werden.

    Die Umsetzung ist nicht ganz einfach, vorallem weil die DB halt auch zum Quellcode passen muss.

    Hier ein Auszug der Klasse:

    using MySql.Data.MySqlClient;
    using System;
    using System.Data;
    
    namespace LogoControl.DataModel
    {
        public class MySQLCon
        {
            private MySqlConnection _Connection;
            private String _TableName;
            public MySQLCon(DataModel.Settings.Mysql_Data mysql)
            {
                _TableName = mysql.TableName;
    
                string connStr = CreateConnStr(mysql.server, mysql.DB, mysql.user, mysql.pass);
    
                //create a MySQL connection with a query string
                _Connection = new MySqlConnection(connStr);
    
                Reconnect();
            }
    
            public void Stop()
            {
                try
                {
                    if (_Connection.State == ConnectionState.Open)
                    {
                        _Connection.Close();
                    }
                }
                catch (MySqlException ex)
                {
                    Console.Out.WriteLine("Stop MySQL: " + ex.Message);
                }
            }
    
            private bool Reconnect()
            {
                if (_Connection.State == ConnectionState.Open)
                {
                    return true;
                }
                else
                {
                    try
                    {
                        _Connection.Open();
                        return true;
                    }
                    catch (MySqlException ex)
                    {
                        Console.Out.WriteLine("Start MySQL: " + ex.Message);
                        return false;
                    }
                }    
            }
    
            public bool StoreData(int id, int attribute, string plcName, string group, string device, double value, string textvalue)
            {
                if (Reconnect())
                {
                    try
                    {
                        using (MySqlCommand cmd = new MySqlCommand())
                        {
                            cmd.CommandText = @"INSERT INTO " + this._TableName +
                                                   "(ID, Attribute, Logo, Group, Device, Val, TextVal, LastChange, LastUpdate)" +
                                                   "VALUES" +
                                                   "(@ID,@ATTRIBUTE,@LOGO,@GROUP,@DEVICE,@VALUE,@TEXTVALUE,NOW(),NOW())" +
                                                   "ON DUPLICATE KEY UPDATE" +
                                                   "LastChange = IF(Val <> VALUES(Val), NOW(), LastChange)," +
                                                   "Logo = VALUES(Logo)," +
                                                   "Group = VALUES(Group)," +
                                                   "Device = VALUES(Device)," +
                                                   "Val = VALUES(Val)," +
                                                   "TextVal = VALUES(TextVal)," +
                                                   "LastUpdate = NOW();";
    
                            cmd.Connection = this._Connection;
    
                            cmd.Parameters.AddWithValue("@ID", SqlDbType.SmallInt);
                            cmd.Parameters.AddWithValue("@ATTRIBUTE", SqlDbType.SmallInt);
                            cmd.Parameters.AddWithValue("@VALUE", SqlDbType.Int);
                            
                            cmd.Parameters["@ID"].Value = id;
                            cmd.Parameters["@ATTRIBUTE"].Value = attribute;
                            cmd.Parameters["@VALUE"].Value = value;
    
                            cmd.Parameters.AddWithValue("@LOGO", plcName);
                            cmd.Parameters.AddWithValue("@GROUP", group);
                            cmd.Parameters.AddWithValue("@DEVICE", device);
                            cmd.Parameters.AddWithValue("@TEXTVALUE", textvalue);
    
                            cmd.ExecuteNonQuery();
                        }
                       
                    }
                    catch (MySql.Data.MySqlClient.MySqlException ex)
                    {
                        Console.Out.WriteLine("Error " + ex.Number + " has occurred: " + ex.Message);
                    }
                }
    
                return true;
            }
    
            /// <summary>
            /// Generates a connection string
            /// </summary>
            /// <param name="server">The name or IP of the machine where the MySQL server is running</param>
            /// <param name="databaseName">The name of the database (catalog)</param>
            /// <param name="user">The user id - root if there are no new users which have been created</param>
            /// <param name="pass">The user's password</param>
            /// <returns></returns>
            private static string CreateConnStr(string server, string databaseName, string user, string pass)
            {
                //build the connection string
                string connStr = "server=" + server + ";database=" + databaseName + ";uid=" +
                    user + ";password=" + pass + ";charset=utf8;";
    
                //return the connection string
                return connStr;
            }
    
        }
    }

    Zum „nachrüsten“ würde ich eher folgendes vorschlagen: (Für die RasPi-Version)

    1. php-cli (inkl. php-curl) mit mysql/mariaDB client & Server nachinstallieren (falls nicht bereits vorhanden). – Gibt es ggf. etliche Anleitungen im Netz, einfach mal nach „LAMP“ googeln.

    2. via CronJob (CronTab) z.b. minütlich folgenden Script zum loggen ausführen lassen:

    <?php
    
    $url = "die_URL_bzw_IP_zu_deinem_LogoControl_Server_oder_RasPI:8088/rest/attributes";
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $json = curl_exec($ch);
    curl_close($ch); 
    
    $dataarray = json_decode($json, true)["attributeUpdates"];
    
    $servername = "localhost";
    $username = "LogoControl";
    $password = "SuperSicher123";
    $dbname = "LogoControl";
    
    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error)
    {
        die("Connection failed: " . $conn->connect_error);
    }
    
    $SQL_values = array();
    foreach ($dataarray as $value)
    {
    	array_push($SQL_values, "(" . $value["D"] . "," . $value["A"] . "," . $value["V"] . ")");
    }
    
    $sql = "CREATE TEMPORARY TABLE DataAkt(
       Device INT(11) NOT NULL,
       Attribute INT(11) NOT NULL,
       Value varchar(10) NOT NULL,
       constraint pk_ primary key (Device, Attribute) USING BTREE
    );
    INSERT INTO DataAkt (Device, Attribute, Value) VALUES " . implode(",",$SQL_values) . ";
    INSERT INTO DataAkt (Device, Attribute, Value) VALUES (0,0, DATE_FORMAT(NOW(),'%H:%i:%s'));";
    
    if ($conn -> multi_query($sql))
    {
    	do
    	{
    		if ($result = $conn -> store_result())
    		{
    			while ($row = $result -> fetch_row())
    			{
    				var_dump($row);
    				echo "<br>";
    			}
    			$result -> free_result();
    		}
    		else
    		{
    			//echo "0 results<br>";
    		}
    		if ($conn -> more_results())
    		{
    			//echo "-------------<br>";
    		}
    	} while ($conn -> next_result());
    }
    
    $conn->close();
    die("OK");
    
    ?>

    Die SQL’s & die Tabellen müssten halt noch entsprechend angepasst / erweitert werden, sodass eine „Verlauf-Log“ entsteht.

    VG Keden92

    als Antwort auf: Wie verbindung mit libnodave/ Snap7 herstellen #4045
    Keden92
    Teilnehmer

    Hallo @simdo,

    In der RasPi Version (unter downloads) ist eine vorkompilierte libnodave-arm.so enthalten.
    Unter „Installationsanleitung RasPi“ ist auch erklärt wie man LogoControl auf einem RasPi instelliert. Wenn man nach dieser Anleitung vorgeht, ist eigentlich kein weiteres Installieren oder einbinden von weiterer Software nötig.

    VG Keden92

    als Antwort auf: Wie verbindung mit libnodave/ Snap7 herstellen #4016
    Keden92
    Teilnehmer

    Hallo @simdo

    leider werde ich aus dieser Problembeschreibung nicht ganz schlau.

    Wenn du dies ein wenig ausführlicher beschreibst, kann ich dir evtl. helfen.

    VG Keden92

    als Antwort auf: calculation Nachkommastellen begrenzen #4015
    Keden92
    Teilnehmer

    Hallo @TeWe

    Hast du ggf. ein Bsp. ?

    Mit {Floor([value]/60)} zb. wird auf eine „Ganze Zahl“ abgerundet (Alles was nach dem Komma kommt wird einfach abgeschnitten).

    VG

    als Antwort auf: Analogen Netzwerkeingang per API schreiben #4013
    Keden92
    Teilnehmer

    Moin,

    geht mit:
    localhost:8088/rest/devices/33/attributes/1/valueText?set=12.3°C // Mit TextValue Converter
    oder:
    localhost:8088/rest/devices/33/attributes/1/value?set=123 // Ohne TextValue Converter

    Aber ist mit Vorsicht zu genießen das Ganze. Die Funktion Set_AnalogValue ist Buggy in der hier veröffentlichten Version.
    Mal Funktionierts – Mal nicht (Einfach erklärt. – Für den Profi: In der Funktion fehlt der AccessLock für die TCP-Verbindung – Es kann zu Datankollosionen kommen – So ein wenig nach zufallsprinzip ob die Verbindung grade belegt ist oder nicht.)

    VG Keden92

    PS: Irgend etwas in diesem Formu mag mich nicht… hier einen Beitrag zu verfassen ist ne Katastrophe…..

    • Diese Antwort wurde vor vor 3 Jahren von Keden92 bearbeitet.
    als Antwort auf: Layout-Frage: Zeilenumbruch für Gruppen #4003
    Keden92
    Teilnehmer

    Hallo,

    okay, Sorry, Frage falsch verstanden – vergiss die Antwort von vorhin.

    Mach untergruppen: (hier ein Bsp. aus meiner Config)

    <group name="Keller">
    			<group name="Heizungsraum">
    				<device id="52" name="Licht" type="light">
    					<attribute id="1" name="Status" plc="myLogo1" address="I18" valueTextConverter="an_aus" />
    					<method id="1" name="on" plc="myLogo1" address="155.0" />
    					<method id="2" name="off" plc="myLogo1" address="155.1" />
    				</device>				
    			</group>
    			<group name="Flur">
    				<device id="54" name="Licht" type="light">
    					<attribute id="1" name="Status" plc="myLogo2" address="I18" valueTextConverter="an_aus" />
    					<method id="1" name="on" plc="myLogo2" address="155.0" />
    					<method id="2" name="off" plc="myLogo2" address="155.1" />
    				</device>				
    			</group>
    			<group name="Waschküche">
    				<device id="55" name="Licht" type="light">
    					<attribute id="1" name="Status" plc="myLogo3" address="I18" valueTextConverter="an_aus" />
    					<method id="1" name="on" plc="myLogo3" address="155.0" />
    					<method id="2" name="off" plc="myLogo3" address="155.1" />
    				</device>				
    			</group>
    			<group name="Arbeitskeller">
    				<device id="57" name="Licht" type="light">
    					<attribute id="1" name="Status" plc="myLogo1" address="I20" valueTextConverter="an_aus" />
    					<method id="1" name="on" plc="myLogo1" address="155.2" />
    					<method id="2" name="off" plc="myLogo1" address="155.3" />
    				</device>				
    			</group>
    			<group name="Keller Kammer">
    				<device id="78" name="Licht" type="light">
    					<attribute id="1" name="Status" plc="myLogo2" address="I20" valueTextConverter="an_aus" />
    					<method id="1" name="on" plc="myLogo2" address="155.2" />
    					<method id="2" name="off" plc="myLogo2" address="155.3" />
    				</device>				
    			</group>
    		</group>
    		<group name="Obergeschoss 1">
    			<group name="Kinderzimmer">
    				<device id="1" name="Licht" type="light">
    					<attribute id="1" name="Status" plc="myLogo1" address="I2" valueTextConverter="an_aus" />
    					<method id="1" name="on" plc="myLogo1" address="150.0" />
    					<method id="2" name="off" plc="myLogo1" address="150.1" />
    				</device>	
    				<device id="2" name="Rollladen" type="shutter">
    					<attribute id="1" name="Status" plc="myLogo1" address="106.0" valueTextConverter="an_aus" />
    					<attribute id="2" name="Soll Position" plc="myLogo1" address="4" datatype="word" valueTextConverter="shutter"/>
    					<attribute id="3" name="Ist Position" plc="myLogo1" address="6" datatype="word" valueTextConverter="shutter"/>
    					<attribute id="4" name="Aktiv Auf" plc="myLogo1" address="Q5" valueTextConverter="an_aus" />
    					<attribute id="5" name="Aktiv Ab" plc="myLogo1" address="Q6" valueTextConverter="an_aus" />
    					<method id="1" name="Reconfigure Position" plc="myLogo1" address="151.0" />
    					<method id="2" name="Run Crontab" script="Crontab.sh" />
    					<trigger plc="myLogo1" address="Q5" datatype="bit">
    						<onValue value="1" method="2" />
    					</trigger>
    				</device>
    			</group>
    			<group name="Büro">
    				<device id="3" name="Licht" type="light">
    					<attribute id="1" name="Status" plc="myLogo1" address="I4" valueTextConverter="an_aus" />
    					<method id="1" name="on" plc="myLogo1" address="150.2" />
    					<method id="2" name="off" plc="myLogo1" address="150.3" />
    				</device>
    				<device id="68" name="Leinwand" type="light">
    					<attribute id="1" name="Status" plc="myLogo1" address="154.2" valueTextConverter="an_aus" />
    					<attribute id="2" name="Auf" plc="myLogo1" address="M2" valueTextConverter="an_aus" />
    					<attribute id="3" name="Ab" plc="myLogo1" address="M12" valueTextConverter="an_aus" />
    					<method id="1" name="Auf" plc="myLogo1" address="154.1" />
    					<method id="2" name="Ab" plc="myLogo1" address="154.0" />
    					<method id="3" name="Start Beamer" script="Boot_Beamer.sh" />
    					<trigger plc="myLogo1" address="M12" datatype="bit">
    						<onValue value="1" method="3" />
    					</trigger>
    				</device>
    				<device id="4" name="Rollladen" type="shutter">
    					<attribute id="1" name="Status" plc="myLogo1" address="106.1" valueTextConverter="an_aus" />
    					<attribute id="2" name="Soll Position" plc="myLogo1" address="0" datatype="word" valueTextConverter="shutter"/>
    					<attribute id="3" name="Ist Position" plc="myLogo1" address="2" datatype="word" valueTextConverter="shutter"/>
    					<attribute id="4" name="Aktiv Auf" plc="myLogo1" address="Q7" valueTextConverter="an_aus" />
    					<attribute id="5" name="Aktiv Ab" plc="myLogo1" address="Q8" valueTextConverter="an_aus" />
    					<method id="1" name="Reconfigure Position" plc="myLogo1" address="151.3" />
    					<method id="2" name="Run Crontab" script="Crontab.sh" />
    					<trigger plc="myLogo1" address="Q7" datatype="bit">
    						<onValue value="1" method="2" />
    					</trigger>
    				</device>
    			</group>
    			<group name="Bad">
    				<device id="5" name="Licht" type="light">
    					<attribute id="1" name="Status" plc="myLogo2" address="I2" valueTextConverter="an_aus" />
    					<method id="1" name="on" plc="myLogo2" address="150.0" />
    					<method id="2" name="off" plc="myLogo2" address="150.1" />
    				</device>
    				<device id="65" name="Lüfter" type="light">
    					<attribute id="1" name="Status" plc="myLogo2" address="I4" valueTextConverter="an_aus" />
    					<method id="1" name="on" plc="myLogo2" address="150.2" />
    					<method id="2" name="off" plc="myLogo2" address="150.3" />
    				</device>				
    				<device id="6" name="Rollladen" type="shutter">
    					<attribute id="1" name="Status" plc="myLogo2" address="106.0" valueTextConverter="an_aus" />
    					<attribute id="2" name="Soll Position" plc="myLogo2" address="0" datatype="word" valueTextConverter="shutter"/>
    					<attribute id="3" name="Ist Position" plc="myLogo2" address="2" datatype="word" valueTextConverter="shutter"/>
    					<attribute id="4" name="Aktiv Auf" plc="myLogo2" address="Q6" valueTextConverter="an_aus" />
    					<attribute id="5" name="Aktiv Ab" plc="myLogo2" address="Q5" valueTextConverter="an_aus" />
    					<method id="1" name="Reconfigure Position" plc="myLogo2" address="151.0" />
    					<method id="2" name="Run Crontab" script="Crontab.sh" />
    					<trigger plc="myLogo2" address="Q6" datatype="bit">
    						<onValue value="1" method="2" />
    					</trigger>
    				</device>				
    			</group>
    			<group name="Flur">
    				<device id="7" name="Licht" type="light">
    					<attribute id="1" name="Status" plc="myLogo3" address="I2" valueTextConverter="an_aus" />
    					<method id="1" name="on" plc="myLogo3" address="150.0" />
    					<method id="2" name="off" plc="myLogo3" address="150.1" />
    				</device>				
    			</group>
    		</group>

    Vg

    als Antwort auf: Analogwerte Springen bei bestimmten werten #4001
    Keden92
    Teilnehmer

    Hallo,

    klingt als hättet du einen falschen oder nicht kompatiblen valueTextConverter=“XX“ in deiner Config.

    Ein Auszug der Config.xml könnte hier evtl. weiterhelfen.

    Vg

    als Antwort auf: Layout-Frage: Zeilenumbruch für Gruppen #4000
    Keden92
    Teilnehmer

    „& lt ; br / & gt ;“ – Ohne die Leerzeichen dazwischen!

    als Antwort auf: Layout-Frage: Zeilenumbruch für Gruppen #3999
    Keden92
    Teilnehmer

    Hallo,

    <br/>

    als Zeilenumbruch einfügen.

    Vg

    als Antwort auf: Fehler bei Verbindungsaufbau zu PLC #3998
    Keden92
    Teilnehmer

    Hallo Zusammen,

    ich weiß, das Thema ist schon ein paar Tage älter, hatte aber grade genau das gleich Problem und habe es gelöst bekommen.

    Habe nun die Libnodave auf einem Operating System: Debian GNU/Linux 10 (buster), Kernel: Linux 4.19.0-13-amd64, Architecture: x86-64 laufen.

    Falls hier noch Interesse bestehen sollte oder jmd. zukünftig hier eine Lösung brauchen sollte:

    -*- Die Version 0.8.4.5 der Libnodave runterladen libnodave-0.8.4.5.zip.

    -*- Im Makefile Zeile 16 ein „-fPIC“ ergänzen.

    -*- make clean (build-essential vorausgesetzt)

    -*- make (build-essential vorausgesetzt)

    -*- libnodave.so ins LogoControl Verzeichnis kopieren (oder verlinken).

    -*- ein kühles blondes genießen.

    Der „Trick“ ist in der libnodave Version – die neuste (0.8.5.1 oder so) ist nicht mehr mit LOGO kompatibel!!

    Vg

    als Antwort auf: Logo Control startet nicht #3950
    Keden92
    Teilnehmer

    @TeWe bezüglich der Bug-Geschichte…

    Also irgendwie ist es mir als „Neuem User“ nicht möglich Themen zu erstellen ohne das diese moderiert werden müssen. Da dies aber irgendwie von keinem mehr übernommen wird und dem Admin selber seine letzte Aktivität vor keine Ahnung wie langer zeit zurück liegt… wird dies irgendwie schwer werden.

    VG

    als Antwort auf: Logo Control startet nicht #3948
    Keden92
    Teilnehmer

    @TeWe Jawohl: Das beschriebene Vorgehen ist für die Windows und Raspi Version identisch!

    als Antwort auf: Logo Control startet nicht #3945
    Keden92
    Teilnehmer

    @All:

    Habe es grade getestet: wenn man die Zeile entfernt (oder Auskommetiert) dann startet LogoControl und alles läuft ohne Probleme. Einziges Manko: Wenn die Logo beim Start nicht erreichbar ist, wird diese auch im weiteren Verlauf nicht abgefragt! -> Heißt: sobald die Logo online geht, muss LogoControl neu gestartet werden (Button unter Konfiguration reicht) damit diese auch wieder abgefragt wird. Sie wird Quasie Ausgeplant wenn sie zum Startzeitpunkt nicht verfügbar ist, muss aber nicht aus der Config entfernt werden. (Ich denke mal damit kann man Leben).


    @TeWe
    : Bezüglich der Bugs… Sind zum teil für alle Relevant die das Projekt nutzen, hatte hierzu auch einen längeren Fomrumsbeitrag verfasst der aber irgendwie nie veröffnetlicht wurde…. kein Plan warum. Da ich den damals in word verfasst habe & mit STRG+C/V ins Forum transportiert habe, werd ich den später (wenn ich am entsprechenden Rechner bin) mal versuchen nochmal zu Posten… wenns wieder nicht klappt, kopiere ich es einfach hier drunter, ist dann aber Off-Topic.

    VG

15 Beiträge anzeigen - 1 bis 15 (von insgesamt 19)