Hej
Jag tänkte försöka mig på att skapa en egen sensor för väderinformation. Likt den som används för motorvärmare fast jag är mer ute efter hur vädret är.
Jag har byggt i både PHP och i vbscript som parsar en xml sida och får fram om det är molnigt, regn, sol eller så beroende på vad jag vill ha för utskrift.
(Det är byggt i både PHP och VBScript just nu då jag har stört kunskaper inom PHP och då är enklast visualisera där )
Det jag nu funderar på är hur tusan ska man få "sensor path" att köra önskat script eller ens en bat fil och fånga dess utskrift och lagra det i "sensor value"?
Någon som vet hur man till en enkel början bara får en echo från en bat fil att hamna i sensor value? Möjligheterna som detta skulle ge är enorma.
Då skulle det gå att ha en on formula som är = regn # 00:50 t.ex. för att tända lampor 50 tidigare om det är regn ute..
Tack på förhand
Mikael
Sensor Value och egna sensorer
Re: Sensor Value och egna sensorer
Fick svar från Henrik via mail om att NexaHome vill ha rena siffror som svar från eventuella bat filer.
Så jag modifierade det hela till såhär:
SensorTest.Bat:
getWeather.php:
Ovan fungerar felfritt! Så nu har jag i formeln i NexaHome:
"= 1 # 00:15"
Funktionen på enheten i eventlistan är "Sensor-".
Så nu finns det här ifall någon annan är intresserad...
Så jag modifierade det hela till såhär:
SensorTest.Bat:
Code: Select all
@echo off
h:\php\php.exe h:\php\scripts\getWeather.php
Code: Select all
$FileHandle = fopen("http://weather.yahooapis.com/forecastrss?w=904567","r");
$FileContent = stream_get_contents($FileHandle);
fclose($FileHandle);
$StartValue = strpos($FileContent, "<yweather:condition");
$EndValue = strpos($FileContent, "/>", $StartValue);
$CurrentWeather = strtolower(substr($FileContent, $StartValue, ($EndValue-$StartValue)+2));
// Go through a elseif and return proper keyword.
if (strpos($CurrentWeather, "cloudy") !== false) {
echo "1";
} elseif (strpos($CurrentWeather, "sunny") !== false) {
echo "2";
} else {
echo "0";
}
Ovan fungerar felfritt! Så nu har jag i formeln i NexaHome:
"= 1 # 00:15"
Funktionen på enheten i eventlistan är "Sensor-".
Så nu finns det här ifall någon annan är intresserad...
Re: Sensor Value och egna sensorer
Nästa del i detta...
Någon som vet ifall det går att få det såhär:
Tiden för ett event ska styras av sunset och sunrise.
Då är det ju Function Sunset-/+ och Sunrise-/+.
Men går det att få dessa tider justerade baserat på sensor formula?
Jag vill alltså ha två funktioner på en event, att den först hämtar tiden från sunset/sunrise, och sedan kollar mot sensor path/sensor on/off formula.
Går detta?
Någon som vet ifall det går att få det såhär:
Tiden för ett event ska styras av sunset och sunrise.
Då är det ju Function Sunset-/+ och Sunrise-/+.
Men går det att få dessa tider justerade baserat på sensor formula?
Jag vill alltså ha två funktioner på en event, att den först hämtar tiden från sunset/sunrise, och sedan kollar mot sensor path/sensor on/off formula.
Går detta?
Re: Sensor Value och egna sensorer
Du skulle kunna uppdatera NexaHome attribut från ditt php script, i följande tråd så finns det beskrivet hur man gör för att exekvera bsh kommandon via url.dagalufh wrote:Nästa del i detta...
Någon som vet ifall det går att få det såhär:
Tiden för ett event ska styras av sunset och sunrise.
Då är det ju Function Sunset-/+ och Sunrise-/+.
Men går det att få dessa tider justerade baserat på sensor formula?
Jag vill alltså ha två funktioner på en event, att den först hämtar tiden från sunset/sunrise, och sedan kollar mot sensor path/sensor on/off formula.
Går detta?
Styra "mode" med fjärrkontroll
http://www.telldus.com/forum/viewtopic.php?f=23&t=4191
Skriv in dina nya attribut i Attributes fältet (Config fliken).
Code: Select all
Regn, Mulet, Molnigt, Soligt
Henrik | http://easyhomeauto.se
Re: Sensor Value och egna sensorer
Nu har jag suttit en stund och kikat på detta. Tror att jag fått ordning på det.
Mitt tillvägagångssätt:
Del 1:
Uppdaterade till version 3.7 av NexaHome.
Sedan ändrade jag det PHP script som jag använde ovan.
Tillägg på det är:
Sen i config som Henrik skrivit, lade jag in Molnigt som attribut.
Fick skapa upp en Dummy Sensor med ett event som har sensor som funktion, detta för att kunna ha sensor path kopplat till bat-filen som kör ovan phpscript. (Säkert onödigt långsökt men det är så jag kunde lösa det iallafall så bat-filen körs regelbundet och håller aktivt attribut korrekt.)
På enheterna som jag vill styra:
Två events per handling. Två på, två av.
Så rad 1 sätter på-tid en timma före solnedgång OM php scriptet har kört Molnigt:set.
rad 3 sätter av tid till en timma efter soluppgång OM php scriptet har kört Molnigt:set
Är det Molnigt:set så är de andra avaktiverade genom Mode inställning.
Och tvärtom i alla andra väderförhållanden i dagsläget. Ska ju såklart lägga in så det täcker in de väderleker jag önskar och nu när grunden är igång, är det löjligt enkelt att lägga till flera Attribut som kan styras via PHP script.
TACK Henrik till denna lösning, som det ser ut nu verkar det fungera klockrent.
Någon som har några synpunkter på detta? Finns det smidigare sätt eller verkar det bra?
Mitt tillvägagångssätt:
Del 1:
Uppdaterade till version 3.7 av NexaHome.
Sedan ändrade jag det PHP script som jag använde ovan.
Tillägg på det är:
Code: Select all
if (strpos($CurrentWeather, "Cloudy")) {
echo "1";
$FileHandle2 = fopen('http://'.$Serveradress.'/nexahome/?bsh=attribute(%22Molnigt:set%22)',"r");
$FileContent2 = stream_get_contents($FileHandle2);
fclose($FileHandle2);
} else {
echo "0";
$FileHandle2 = fopen('http://'.$Serveradress.'/nexahome/?bsh=attribute(%22Molnigt:clear%22)',"r");
$FileContent2 = stream_get_contents($FileHandle2);
fclose($FileHandle2);
}
Fick skapa upp en Dummy Sensor med ett event som har sensor som funktion, detta för att kunna ha sensor path kopplat till bat-filen som kör ovan phpscript. (Säkert onödigt långsökt men det är så jag kunde lösa det iallafall så bat-filen körs regelbundet och håller aktivt attribut korrekt.)
På enheterna som jag vill styra:
Två events per handling. Två på, två av.
Code: Select all
device cmd HH MM function + Mode/Attr - Mode/Attr
1-1 På 01 00 sunset- Molnigt
1-1 På 00 00 sunset+ Molnigt
1-1 Av 01 00 sunrise+ Molnigt
1-1 Av 00 00 sunrise- Molnigt
rad 3 sätter av tid till en timma efter soluppgång OM php scriptet har kört Molnigt:set
Är det Molnigt:set så är de andra avaktiverade genom Mode inställning.
Och tvärtom i alla andra väderförhållanden i dagsläget. Ska ju såklart lägga in så det täcker in de väderleker jag önskar och nu när grunden är igång, är det löjligt enkelt att lägga till flera Attribut som kan styras via PHP script.
TACK Henrik till denna lösning, som det ser ut nu verkar det fungera klockrent.
Någon som har några synpunkter på detta? Finns det smidigare sätt eller verkar det bra?