Zurück   IP-Symcon Community Forum > IP-Symcon 2.x > Scripte, PHP, SQL

Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
  #1 (permalink)  
Alt 11.07.10, 13:32
Junior Member
 
Registriert seit: Aug 2009
Beiträge: 22
Standard Register Variable Timing

Hallo, ich habe folgendes Problem:
ich lese die Daten der Solaranlage über eine USB Schnittstelle über eine Register Variable in IPS ein. Das funktioniert auch soweit gut.
Allerdings ist ein kompletter Satz ca. alle 4 Sekunden vorhanden und wird in die Datenbank geschrieben - ein bisschen zu genau. Die Datenbank wird recht schnell recht groß und wenn man sich Diagramme ansehen will, dauerts aufgrund der Atom CPU doch lange oder bricht ab.
Wie kann ich die RegisterVariable Ausführung z.B. nur alle 120 Sekunden ausführen, bzw. Daten empfangen.Das Skript solange zu pausieren blockiert irgendwie die anderen Skripte, bzw. 120s sind nicht vorgesehen.
Danke, Axel
Mit Zitat antworten
  #2 (permalink)  
Alt 11.07.10, 14:35
Senior Member
 
Registriert seit: Oct 2005
Ort: Gehrden / Hannover
Beiträge: 500
Standard

Schreib doch den Wert in eine Variable die nicht geloggt wird. Und dann führst du alle 120 Sekunden ein Script aus welches die Daten dann in deine Loggingvariable übernimmt.
__________________
FHZ1300 | 2x JeeLink | AVR-NETIO | FS20 | 1-Wire | 2x XBEE Pro | 4x XBEE 2.5 (als Zigbee Mesh) | eDip | 7x Jeenode | JeeNode EtherCard | CUL Stick
3x Fritz!Box, WHS, XBMC, IPS-Server (Atom)
Mit Zitat antworten
  #3 (permalink)  
Alt 13.07.10, 22:41
Junior Member
 
Registriert seit: Aug 2009
Beiträge: 22
Standard Funktioniert !

Danke für den Tip - war eigentlich gar nicht so schwer!
Gruß, Axel
Mit Zitat antworten
  #4 (permalink)  
Alt 04.06.11, 23:10
Junior Member
 
Registriert seit: Aug 2009
Beiträge: 22
Standard Neues Problem - Schnittstelle schickt zu schnell zu viele Daten

Die Resol Anlage und das Logging funktionieren problemlos.
Jetzt mein neues Problem:
Habe endlich den Fröling S4 Turbo mit Lambdatronic S3200 an den Rechner angeschlossen.
Es kommen auch die Daten an - nahezu in Klartext.
Nur leider ca. 40 mal pro ! Sekunde! ein kompletter Parametersatz (geschätzt 700 Zeichen).
Das sprengt, glaube ich, die Auswertung in IPS. Ich habe einen Atom 330 (2x1,6 + 2GB Ram) - die CPU Auslastung geht auf permant 60-70% nach oben. Ein Homematic Befehlt braucht >1min bis die Aktion erfolgt. Wenn ich den Seriellen Port schliesse, ist wieder alles normal schnell.
Hat jemand eine Idee wie ich die Flut der ankommenden Daten drosseln kann?
Mit Zitat antworten
  #5 (permalink)  
Alt 05.06.11, 00:33
Senior Member
 
Registriert seit: Apr 2011
Ort: Cologne
Beiträge: 142
Standard

Hi,

ich habe ein ähnliches Problem mit meinem eHZ. Habe es gelöst, in dem ich den Zähler nur minütlich mit folgendem Skript kurz auf Empfang stelle:

Code:
<?
COMPort_SetDTR(34485 /*[eHZ Serial Port]*/, true);
IPS_Sleep(2100);
COMPort_SetDTR(34485 /*[eHZ Serial Port]*/ , false);
?>
Sollte das nicht gehen, dann schau mal, wie man den Comport aktiv/inaktiv setzt.

CPU-Last ist nur ein Problem, wenn man zu oft ausliest, dann wird die Logging-DB aufgebläht...

Grüsse,
Axel
Mit Zitat antworten
  #6 (permalink)  
Alt 05.06.11, 06:59
Senior Member
 
Registriert seit: Mar 2009
Ort: Bad Zell / Austria
Beiträge: 197
Standard

Hallo,
die Schnittstelle kannst Du mit folgenden Befehl öffnen / schliessen

PHP-Code:
<?
$COM_PORT_ID 
33848 /*[Serial_Port_COM3]*/ ;

COMPort_SetOpen($COM_PORT_ID,true);
IPS_ApplyChanges($COM_PORT_ID);
?>
... würde über ein Script die RegVariable leeren und die Schnittstelle öffnen
Muster:
PHP-Code:
<?
$COM_PORT_ID 
33848 /*[Serial_Port_COM3]*/ ;
$RegVar_COM3_READ  35886 /*[TEST\RegisterVariable_COM3_READ]*/ ;

//LeseBuffer leeren bevor neuen Request
RegVar_SetBuffer($RegVar_COM3_READ,"");
IPS_Sleep(500);

//ComPort oeffnen
COMPort_SetOpen($COM_PORT_ID,true);
IPS_ApplyChanges($COM_PORT_ID);
?>
... und im RegVarScript eben die Daten empfangen, dabei musst Du eine Möglichkeit finden wie Du die Datensatzlänge (Header, Datensatzende) erkennen kannst den ich gehe mal davon aus das die Steuerung alle X ms einen Datensatz schickt und Du den ersten Datensatz defragmentiert (abgeschnitten) bekommst ==> nach erfolgreichen Empfang kannst Du die Schnittstelle wieder schliessen

Muster:
PHP-Code:
<?
$COM_PORT_ID 
33848 /*[Serial_Port_COM3]*/ ;
$RegVar_COM3_READ  35886 /*[TEST\RegisterVariable_COM3_READ]*/ ;

//BUFFER FUELLEN --> Daten lesen von COM-Port
$buf RegVar_GetBuffer($RegVar_COM3_READ);
$buf .= $IPS_VALUE;
RegVar_SetBuffer($RegVar_COM3_READ,$buf);
//*******************************************

if (strlen($buf)>= 2000)
  {
   
//wenn minestens 2 vollständige Datensätze in der RegVar empfangen

   //Schnittstelle schliessen ...
   
COMPort_SetOpen($COM_PORT_ID,false);
   
IPS_ApplyChanges($COM_PORT_ID);
  
  
//Auswertung der Daten ...
 
  
}
?>
tgusi74
Mit Zitat antworten
Antwort

Stichworte
register variable , timing

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Von Newbie für Newbies: Register Variablen jwka Scripte, PHP, SQL 14 20.09.11 13:08
Nach einem Tag IPS-Betrieb nur noch FHT-Position-Variablen neu. nancilla Allgemeine Diskussion 15 12.09.06 15:44
Buffer in der WLAN FHZ ? guyabano Allgemeine Diskussion 2 11.06.06 22:54
FS20 PIRI wieso? GGGss Sonstige Funkkomponenten / Wetterstationen 1 27.01.06 21:37
Software oder Script ? guyabano Allgemeine Diskussion 30 21.12.05 13:14


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:50 Uhr.


Powered by vBulletin® Version 3.8.4 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0