Hej!
Finns det något vettigt sätt att få igång någon typ av loggning av tex temp rörelse etc till en SQL databas eller text fil på NAS eller server när man kör HC2?
Logga till SQL eller fil på nas
Alternativt att man kan nå loggarna/Mysql på sin HC för att kunna läsa ut värden...
Äger ingen HC2 utan kör HomeSeer och ett plugin för att logga allt jag vill till MySQL. Börjar nu fundera på att konvertera till HC2 men loggning av värden till SQL är ett måste.
Har hittat detta http://keplerproject.org/luasql/index.html men kräver att man kan lägga in filer i HC2'an vilket jag inte vet om det går. Ni som har en HC2 kan väl ge det ett försök och återkoppla.
Mvh Love
Har hittat detta http://keplerproject.org/luasql/index.html men kräver att man kan lägga in filer i HC2'an vilket jag inte vet om det går. Ni som har en HC2 kan väl ge det ett försök och återkoppla.
Mvh Love
Nej - är det enklaste svaret.
Det lite mera avancerade svaret är att man kan få en form av loggning, via någon extern molntjänst, som man sedan kan använda - jag själv avstår denna variant.
I version 4 - som kanske kommer någon gång i stabil form - så tror jag att man kan få till detta via den inbyggda programvaran. Men jag vågar då 17on inte ens test v4 så dålig som den är för närvarande....
Det lite mera avancerade svaret är att man kan få en form av loggning, via någon extern molntjänst, som man sedan kan använda - jag själv avstår denna variant.
I version 4 - som kanske kommer någon gång i stabil form - så tror jag att man kan få till detta via den inbyggda programvaran. Men jag vågar då 17on inte ens test v4 så dålig som den är för närvarande....
Kör Home Assistant efter totalt nederlag för HomeSeer
Jag loggar lite temperaturer och sånt till http://emoncms.org
Ingenting jag behöver egentligen, men kul och se historiken.
Vet inte alls om det fyller dina behov då det är en extern tjänst, kolla om du har lust.
Ingenting jag behöver egentligen, men kul och se historiken.
Vet inte alls om det fyller dina behov då det är en extern tjänst, kolla om du har lust.
Jag loggar temperaturvärden varje halvtimme till min Synology NAS (MySQL). Jag gör det genom att: 1) Skapat en scen som kör en virtuell enhet varje halvtimme 2) Skapat en virtuell enhet som anropar ett PHP-dokument på NAS:en med aktuell temperatur som argument 3) Skapat ett PHP-dokument (refereras till i föregående punkt) som tar emot aktuell temperatur från HC2:ans virtuella enhet och lagrar i MySQL på NAS:en.
/ Tommy
/ Tommy
Kan du visa ditt lua skript Tommy, kör oxå synology och skulle vilja logga till den...tommy wrote:Jag loggar temperaturvärden varje halvtimme till min Synology NAS (MySQL). Jag gör det genom att: 1) Skapat en scen som kör en virtuell enhet varje halvtimme 2) Skapat en virtuell enhet som anropar ett PHP-dokument på NAS:en med aktuell temperatur som argument 3) Skapat ett PHP-dokument (refereras till i föregående punkt) som tar emot aktuell temperatur från HC2:ans virtuella enhet och lagrar i MySQL på NAS:en.
/ Tommy
Hej,
Nedan följer det lua-script som jag använder för att skicka aktuell temperatur till det PHP-dokument som lagrar temperaturen i en MySql-databas:
Ändra IP-adress och port i ovanstående kod till adressen där PHP-dokumentet är publicerat (min NAS i mitt fall).
PHP-dokumentet ("test.php" som hänvisas till i kodexemplet ovan) som ligger på en webbserver (t.ex. på NAS:en) ser ut enligt följande:
Ändra värdena "localhost", "userid", "password" och "database" i ovanstående kod så att det stämmer med anslutningsuppgifterna för just din databas. Även SQL-satsen behöver ändras för att matcha schemat i din databas.
Till sist har jag skapat en scen som kör den virtuella enheten (lua-scriptet) varje halvtimme.
Nedan följer det lua-script som jag använder för att skicka aktuell temperatur till det PHP-dokument som lagrar temperaturen i en MySql-databas:
Code: Select all
local rPI = Net.FHttp("192.168.1.1", 80);
local temp = fibaro:getValue(26, "value");
local response = rPI:GET("/test.php?id="..temp);
PHP-dokumentet ("test.php" som hänvisas till i kodexemplet ovan) som ligger på en webbserver (t.ex. på NAS:en) ser ut enligt följande:
Code: Select all
<?php
$id = $_GET['id'];
$con=mysqli_connect("localhost","userid","password","database");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
else
{
echo "Testanslutning OK";
}
$datetime = date("Y-m-d H:i:s");
$sql="INSERT INTO temperatur (DATUM, TEMP) VALUES ('" . $datetime . "', " . $id . ")";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
mysqli_close($con);
?>
Till sist har jag skapat en scen som kör den virtuella enheten (lua-scriptet) varje halvtimme.
Tusen tack! Mycket användbart. Nu kör jag ju inte HC2 men iaf, i händelse av att jag vill byta plattform så kan detta vara det avgörande. Går det att skicka matriser av data på samma sätt? Flera datapunkter lixom?
Ja, det borde gå genom att skicka en array/vektor i querystringen (är dåligt dokumenterat dock) som finns i lua-scriptet. PHP tar emot värdena och läser in det i en array/vektor. Jag vet dock inte om detta är best practice.Dr Love wrote:Tusen tack! Mycket användbart. Nu kör jag ju inte HC2 men iaf, i händelse av att jag vill byta plattform så kan detta vara det avgörande. Går det att skicka matriser av data på samma sätt? Flera datapunkter lixom?
Code: Select all
?id[]=13&id[]=-1&id[]=8
Ja, det går bra. Jag skulle nog lägga till en parameter i querystringen i lua-scriptor som talar om vilken typ av data jag vill logga, t.ex.jens wrote:Tack, kan man även lägga in energi logning?
Sent from my iPhone 6 using Tapatalk
Code: Select all
local rPI = Net.FHttp("192.168.1.1", 80);
local temp = fibaro:getValue(26, "value");
local response = rPI:GET("/test.php?type=temperatur&id="..temp);
Code: Select all
<?php
$id = $_GET['id'];
$type = $_GET['type'];
$con=mysqli_connect("localhost","userid","password","database");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
else
{
echo "Testanslutning OK";
}
$datetime = date("Y-m-d H:i:s");
if ($type == "temperatur") {
$sql="INSERT INTO temperatur (DATUM, TEMP) VALUES ('" . $datetime . "', " . $id . ")";
} elseif ($type == "energi") {
$sql="INSERT INTO energi (DATUM, WATT) VALUES ('" . $datetime . "', " . $id . ")";
} else {
echo "Inget giltigt värde på type har angivits";
}
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
mysqli_close($con);
?>
Grymt! Ska testas framöver. Tusen tack.
//Love
//Love
Nu har jag testat detta, dock med HomeSeer då jag inte har HC2 (ännu). Satt upp en ny MySQL-server med oändligt högre prestanda, min gamla (en NAS) pallade inte riktigt med alla 41 miljoner rader jag har i den nu. Fördelen med ovan tänk är att jag kan logga det jag vill i rader, t.ex. alla intressanta värden för FTX-agget i en rad, inte som med HS-plug-in'et jag köpt och använt för loggning tidigare som loggar alla datapunkter i var sin rad (en kolumn typ). Då blir det svårare att göra grafer med flera kurvor samt en hiskelig massa fler rader i tabellen :/
Nu har jag inte hunnit köra loggning mot nya databasen så länge men det ser lovande ut.
Scriptet i HS2 för loggning av temperaturdata från golvvärmesystemet
Och PHP'n
Tusen tack för alla tips i denna tråd!!
//L
Nu har jag inte hunnit köra loggning mot nya databasen så länge men det ser lovande ut.
Scriptet i HS2 för loggning av temperaturdata från golvvärmesystemet
Code: Select all
Sub Main
dim s
Utomhus = Replace (hs.DeviceValue("S32")/100, ",", ".")
Framledning_nere = Replace (hs.DeviceValue("S30")/100, ",", ".")
Vrum1_inre = Replace (hs.DeviceValue("S28")/100, ",", ".")
Vrum1_center = Replace (hs.DeviceValue("S31")/100, ",", ".")
Vrum1_yttre = Replace (hs.DeviceValue("S29")/100, ",", ".")
Sov1 = Replace (hs.DeviceValue("S17")/100, ",", ".")
Entre = Replace (hs.DeviceValue("S16")/100, ",", ".")
Badrum1 = Replace (hs.DeviceValue("S18")/100, ",", ".")
Tvattstuga = Replace (hs.DeviceValue("S19")/100, ",", ".")
Garage_inre = Replace (hs.DeviceValue("S26")/100, ",", ".")
Garage_yttre = Replace (hs.DeviceValue("S25")/100, ",", ".")
Framledning_uppe = Replace (hs.DeviceValue("S30")/100, ",", ".")
Vrum2_inre = Replace (hs.DeviceValue("S42")/100, ",", ".")
Vrum2_center = Replace (hs.DeviceValue("S42")/100, ",", ".")
Vrum2_yttre = Replace (hs.DeviceValue("S42")/100, ",", ".")
Sov2 = Replace (hs.DeviceValue("S42")/100, ",", ".")
Sov3 = Replace (hs.DeviceValue("S42")/100, ",", ".")
Arb = Replace (hs.DeviceValue("S42")/100, ",", ".")
Badrum2 = Replace (hs.DeviceValue("S42")/100, ",", ".")
s = hs.GetURL ("http://192.168.xxx.xxx","/db/Klimat_varmesys.php?Utomhus="&Utomhus&"&Framledning_nere="&Framledning_nere&"&Vrum1_inre="&Vrum1_inre&"&Vrum1_center="&Vrum1_center&"&Vrum1_yttre="&Vrum1_yttre&"&Sov1="&Sov1&"&Entre="&Entre&"&Badrum1="&Badrum1&"&Tvattstuga="&Tvattstuga&"&Garage_inre="&Garage_inre&"&Garage_yttre="&Garage_yttre&"&Framledning_uppe="&Framledning_uppe&"&Vrum2_inre="&Vrum2_inre&"&Vrum2_center="&Vrum2_center&"&Vrum2_yttre="&Vrum2_yttre&"&Sov2="&Sov2&"&Sov3="&Sov3&"&Arb="&Arb&"&Badrum2="&Badrum2, TRUE, 80)
hs.writelog "Loggning", s
End Sub
Code: Select all
<?php
//Indata via GET
$Utomhus = $_GET['Utomhus'];
$Framledning_nere = $_GET['Framledning_nere'];
$Vrum1_inre = $_GET['Vrum1_inre'];
$Vrum1_center = $_GET['Vrum1_center'];
$Vrum1_yttre = $_GET['Vrum1_yttre'];
$Sov1 = $_GET['Sov1'];
$Entre = $_GET['Entre'];
$Badrum1 = $_GET['Badrum1'];
$Tvattstuga = $_GET['Tvattstuga'];
$Garage_inre = $_GET['Garage_inre'];
$Garage_yttre = $_GET['Garage_yttre'];
$Framledning_uppe = $_GET['Framledning_uppe'];
$Vrum2_inre = $_GET['Vrum2_inre'];
$Vrum2_center = $_GET['Vrum2_center'];
$Vrum2_yttre = $_GET['Vrum2_yttre'];
$Sov2 = $_GET['Sov2'];
$Sov3 = $_GET['Sov3'];
$Arb = $_GET['Arb'];
$Badrum2 = $_GET['Badrum2'];
$con=mysqli_connect("192.168.xxx.xxx","<anv>","<psw>","<db>");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
else
{
echo "Anslutning OK, ";
}
$sql="INSERT INTO klimat_varmesys (Utomhus, Framledning_nere, Vrum1_inre, Vrum1_center, Vrum1_yttre, Sov1, Entre, Badrum1, Tvattstuga, Garage_inre, Garage_yttre, Framledning_uppe, Vrum2_inre, Vrum2_center, Vrum2_yttre, Sov2, Sov3, Arb, Badrum2) VALUES (" . $Utomhus . "," . $Framledning_nere . "," . $Vrum1_inre . "," . $Vrum1_center . "," . $Vrum1_yttre . "," . $Sov1 . "," . $Entre . "," . $Badrum1 . "," . $Tvattstuga . "," . $Garage_inre . "," . $Garage_yttre . "," . $Framledning_uppe . "," . $Vrum2_inre . "," . $Vrum2_center . "," . $Vrum2_yttre . "," . $Sov2 . "," . $Sov3 . "," . $Arb . "," . $Badrum2 . ")";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "klimatdata värmesystem adderad.";
mysqli_close($con);
?>
//L