Zitat von gaert
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
Netatmo | Edomi
Einklappen
X
-
Zitat von gaert Beitrag anzeigenMessen die Teile nur "Lärm" - oder auch "Ton"?!Ein Cloud-Mikrofon im Wohnzimmer wäre mir nämlich irgendwie unheimlich...
Trotzdem kann einem manchmal etwas gruseln, was da in den Wohnzimmern so rumliegt/steht. Denken wir mal an unsere Smartphones (die auf Sprachbefehle lauschen), Fernseher (z.B. solche mit Sprachsteuerung und Internetanschluss), Amazon Echo, Google Home ...
Kommentar
-
Zitat von Fisch Beitrag anzeigenHallo,
Ich habe mir vom Basis Indoor/Outdoormodul-baustein von Timberland einen Zusatzmodulbaustein gebastelt.
PHP-Code:###[DEF]###
[name =Netatmo Zusatzmodul (v1.0) ]
[e#1 = Starten #init=1]
[e#2 = CLIENT_ID ]
[e#3 = CLIENT_SECRET ]
[e#4 = USERNAME ]
[e#5 = PASSWORD ]
[e#6 = debug #init=0]
[e#7 = Modulindex #init=4]
[a#1 =Name Modul ]
[a#2 =Temperature ]
[a#3 =min temp ]
[a#4 =min time ]
[a#5 =max temp ]
[a#6 =max time ]
[a#7 =temp trend ]
[a#8 =Humidity ]
[a#9 =CO2 ]
[a#10 =Battery ]
[a#11 =WiFi ]
[v#1 = 0 ]
[v#2 = 1.0 ] //Version
###[/DEF]###
###[HELP]###
NETATMO Zusatzmodul Baustein für zusaetzliches indoor modul
Diese Dateien mussen im Ordner /usr/local/edomi/main/include/php liegen.
-> Ordner /Netatmo/...
-> Utils.php
Der NETATMO Baustein wird automatisch gestartet, sobald EDOMI gestartet wird (E1 hat den Initialwert 1).
E1: Signal 1 = Startet Baustein (Dämon)
E2: CLIENT ID
E3: CLIENT SECRET
E4: Username
E5: Passwort
E6: Debug
E7: Modulindex
A1: Name Modul
A2: Temperatur
A3: min Temperatur
A4: min Temperarur Uhrzeit
A5: max Temperatur
A6: max Temperarur Uhrzeit
A7: Temperatur trend (stable / up / down)
A8: Humidity
A9: CO2
A10: Battery (full, high, medium, low, very low)
A11: WiFi
V1: Dämon
V2: Version
Changelog:
==========
v1.0: Initial version
###[/HELP]###
###[LBS]###
<?
function LB_LBSID($id) {
if ($E=getLogicEingangDataAll($id)) {
if ($E[1]['value']!=0 && $E[1]['refresh']==1) {
if (getLogicElementVar($id,1)!=1) {
setLogicElementVar($id,1,1);
callLogicFunctionExec(LBSID,$id);
}
}
}
}
?>
###[/LBS]###
###[EXEC]###
<?
require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
define('__ROOT__', dirname(dirname(__FILE__)));
require_once(dirname(__FILE__)."/../../../../main/include/php/Netatmo/src/Netatmo/autoload.php");
require_once (dirname(__FILE__)."/../../../../main/include/php/Utils.php");
set_time_limit(0);
sql_connect();
if ($E=getLogicEingangDataAll($id)) {
if($E[6]['value']==1){debug($id, "Netatmo - LBS : -> Netatmo EXEC started.");}
$client_id = $E[2]['value'];
$client_secret = $E[3]['value'];
$test_username = $E[4]['value'];
$test_password = $E[5]['value'];
}
while(getSysInfo(1)>=1) {
$scope = Netatmo\Common\NAScopes::SCOPE_READ_STATION;
$config = array("client_id" => $client_id,
"client_secret" => $client_secret,
"username" => $test_username,
"password" => $test_password);
$client = new Netatmo\Clients\NAWSApiClient($config);
$data = $client->getData(NULL, TRUE);
foreach($data['devices'] as $device)
{
foreach($device['modules'] as $module){
if ( isset( $module['type'] ) && $module['type'] == 'NAModule4' ) {
setLogicLinkAusgang($id,1,@$module['module_name']);
setLogicLinkAusgang($id,2,@$module['dashboard_data']["Temperature"]);
setLogicLinkAusgang($id,3,@$module['dashboard_data']["min_temp"]);
$date_min_out = @$device['dashboard_data']['date_min_temp'];
$date_min_out = date('H:i', $date_min_out);
setLogicLinkAusgang($id,4,@$date_min_out);
setLogicLinkAusgang($id,5,@$module['dashboard_data']["max_temp"]);
$date_max_out = @$device['dashboard_data']['date_max_temp'];
$date_max_out = date('H:i', $date_max_out);
setLogicLinkAusgang($id,6,@$date_max_out);
setLogicLinkAusgang($id,7,@$module['dashboard_data']["temp_trend"]);
setLogicLinkAusgang($id,8,@$module['dashboard_data']["Humidity"]);
setLogicLinkAusgang($id,9,@$module['dashboard_data']["CO2"]);
if ( $module['battery_vp'] ){
$b=$module['battery_vp'];
switch ($b)
{
case ($b >= 5500):
$c= 'full';
break;
case ($b>= 5000):
$c= 'high';
break;
case ($b>= 4500):
$c= 'medium';
break;
case ($b>= 4000):
$c= 'low';
break;
case ($b< 4000):
$c= 'very low';
break;
default:
$c= 'Error';
}
}
setLogicLinkAusgang($id,10,@$c);
setLogicLinkAusgang($id,11,@$module['rf_status']);
}
}
}
usleep(1000000*50);
}
sql_disconnect();
function debug($id,$msg)
{
$E=getLogicEingangDataAll($id);
$version = getLogicElementVar($id,2);
writeToTraceLog(0,true,"LBSLBSID($id): ".$msg.' [v'.$version.']');
}
?>
###[/EXEC]###
Mit einem eigenen Eingang für den Modulindex habe ich schon herumexperimentiert.
Habe es jedoch noch nicht hinbekommen. Bin auch kein Programmierer. Für einen, der sich auskennt, sollte das ein leichtes sein.
Grüsse
Franz
Kommentar
-
Ohne das jetzt testen zu können, aber versuch das damit. Auf E7 gibst dann das Modul an. NAModule4, NAModule5 oder NAModule6
PHP-Code:###[DEF]###
[name =Netatmo Zusatzmodul (v1.0) ]
[e#1 = Starten #init=1]
[e#2 = CLIENT_ID ]
[e#3 = CLIENT_SECRET ]
[e#4 = USERNAME ]
[e#5 = PASSWORD ]
[e#6 = debug #init=0]
[e#7 = Modulindex #init=NAModule4]
[a#1 =Name Modul ]
[a#2 =Temperature ]
[a#3 =min temp ]
[a#4 =min time ]
[a#5 =max temp ]
[a#6 =max time ]
[a#7 =temp trend ]
[a#8 =Humidity ]
[a#9 =CO2 ]
[a#10 =Battery ]
[a#11 =WiFi ]
[v#1 = 0 ]
[v#2 = 1.0 ] //Version
###[/DEF]###
###[HELP]###
NETATMO Zusatzmodul Baustein für zusaetzliches indoor modul
Diese Dateien mussen im Ordner /usr/local/edomi/main/include/php liegen.
-> Ordner /Netatmo/...
-> Utils.php
Der NETATMO Baustein wird automatisch gestartet, sobald EDOMI gestartet wird (E1 hat den Initialwert 1).
E1: Signal 1 = Startet Baustein (Dämon)
E2: CLIENT ID
E3: CLIENT SECRET
E4: Username
E5: Passwort
E6: Debug
E7: Modulindex
A1: Name Modul
A2: Temperatur
A3: min Temperatur
A4: min Temperarur Uhrzeit
A5: max Temperatur
A6: max Temperarur Uhrzeit
A7: Temperatur trend (stable / up / down)
A8: Humidity
A9: CO2
A10: Battery (full, high, medium, low, very low)
A11: WiFi
V1: Dämon
V2: Version
Changelog:
==========
v1.0: Initial version
###[/HELP]###
###[LBS]###
<?
function LB_LBSID($id) {
if ($E=getLogicEingangDataAll($id)) {
if ($E[1]['value']!=0 && $E[1]['refresh']==1) {
if (getLogicElementVar($id,1)!=1) {
setLogicElementVar($id,1,1);
callLogicFunctionExec(LBSID,$id);
}
}
}
}
?>
###[/LBS]###
###[EXEC]###
<?
require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
define('__ROOT__', dirname(dirname(__FILE__)));
require_once(dirname(__FILE__)."/../../../../main/include/php/Netatmo/src/Netatmo/autoload.php");
require_once (dirname(__FILE__)."/../../../../main/include/php/Utils.php");
set_time_limit(0);
sql_connect();
if ($E=getLogicEingangDataAll($id)) {
if($E[6]['value']==1){debug($id, "Netatmo - LBS : -> Netatmo EXEC started.");}
$client_id = $E[2]['value'];
$client_secret = $E[3]['value'];
$test_username = $E[4]['value'];
$test_password = $E[5]['value'];
$modulindex = $E[7]['value'];
}
while(getSysInfo(1)>=1) {
$scope = Netatmo\Common\NAScopes::SCOPE_READ_STATION;
$config = array("client_id" => $client_id,
"client_secret" => $client_secret,
"username" => $test_username,
"password" => $test_password);
$client = new Netatmo\Clients\NAWSApiClient($config);
$data = $client->getData(NULL, TRUE);
foreach($data['devices'] as $device)
{
foreach($device['modules'] as $module){
if ( isset( $module['type'] ) && $module['type'] == $modulindex ) {
setLogicLinkAusgang($id,1,@$module['module_name']);
setLogicLinkAusgang($id,2,@$module['dashboard_data']["Temperature"]);
setLogicLinkAusgang($id,3,@$module['dashboard_data']["min_temp"]);
$date_min_out = @$device['dashboard_data']['date_min_temp'];
$date_min_out = date('H:i', $date_min_out);
setLogicLinkAusgang($id,4,@$date_min_out);
setLogicLinkAusgang($id,5,@$module['dashboard_data']["max_temp"]);
$date_max_out = @$device['dashboard_data']['date_max_temp'];
$date_max_out = date('H:i', $date_max_out);
setLogicLinkAusgang($id,6,@$date_max_out);
setLogicLinkAusgang($id,7,@$module['dashboard_data']["temp_trend"]);
setLogicLinkAusgang($id,8,@$module['dashboard_data']["Humidity"]);
setLogicLinkAusgang($id,9,@$module['dashboard_data']["CO2"]);
if ( $module['battery_vp'] ){
$b=$module['battery_vp'];
switch ($b)
{
case ($b >= 5500):
$c= 'full';
break;
case ($b>= 5000):
$c= 'high';
break;
case ($b>= 4500):
$c= 'medium';
break;
case ($b>= 4000):
$c= 'low';
break;
case ($b< 4000):
$c= 'very low';
break;
default:
$c= 'Error';
}
}
setLogicLinkAusgang($id,10,@$c);
setLogicLinkAusgang($id,11,@$module['rf_status']);
}
}
}
usleep(1000000*50);
}
sql_disconnect();
function debug($id,$msg)
{
$E=getLogicEingangDataAll($id);
$version = getLogicElementVar($id,2);
writeToTraceLog(0,true,"LBSLBSID($id): ".$msg.' [v'.$version.']');
}
?>
###[/EXEC]###
Kommentar
-
Zitat von BabylonYa Beitrag anzeigen
Könnte vielleicht bitte jemand auf Basis von Fischs Vorschlag eine Netatmo Modulerweiterung für die max 3 Zusatzmodule machen. Ich bekomme es leider nicht wirklich zum laufen :-(
- Likes 1
Kommentar
-
Könnt möglicherweise Interessant werden:
https://www.netatmo.com/product/security/presence
Hat jemand schon mit der Welcome Erfahrungen gemacht?
Kommentar
-
Sieht recht chic aus (mal was anderes) - mich würde rein optisch allerdings stören, dass die "Lampe" irgendwie schief hängen wird... Daher bevorzuge ich Dome-Kameras.EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)
Kommentar
-
Moin,
ich bekomme vom dem Baustein 19000291 täglich von 0.00 - ca. 0.05 Uhr täglich ein paar Meldungen im Fehler-Log:
Code:[TABLE="border: 0, cellpadding: 0, cellspacing: 0"] [TR] [TD]2016-09-27 00:00:55[/TD] [TD]328142[/TD] [TD]?[/TD] [TD]5534[/TD] [TD]Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19000291.php | Fehlercode: 8 | Zeile: 171 | Undefined index: sum_rain_24[/TD] [TD]ERROR[/TD] [/TR] [TR] [TD]2016-09-27 00:02:05[/TD] [TD]692859[/TD] [TD]?[/TD] [TD]5534[/TD] [TD]Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19000291.php | Fehlercode: 8 | Zeile: 171 | Undefined index: sum_rain_24[/TD] [TD]ERROR[/TD] [/TR] [TR] [TD]2016-09-27 00:03:16[/TD] [TD]014918[/TD] [TD]?[/TD] [TD]5534[/TD] [TD]Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19000291.php | Fehlercode: 8 | Zeile: 171 | Undefined index: sum_rain_24[/TD] [TD]ERROR[/TD] [/TR] [TR] [TD]2016-09-27 00:04:26[/TD] [TD]350852[/TD] [TD]?[/TD] [TD]5534[/TD] [TD]Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19000291.php | Fehlercode: 8 | Zeile: 171 | Undefined index: sum_rain_24[/TD] [TD]ERROR[/TD] [/TR] [TR] [TD]2016-09-27 00:05:36[/TD] [TD]671960[/TD] [TD]?[/TD] [TD]5534[/TD] [TD]Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19000291.php | Fehlercode: 8 | Zeile: 171 | Undefined index: sum_rain_24[/TD] [TD]ERROR[/TD] [/TR] [/TABLE]
Aber wie kann ich die Einträge im Fehler-Log vermeiden?
Viele Grüße,
Mucki
Kommentar
-
Zitat von MuckiLegden Beitrag anzeigenMoin,
ich bekomme vom dem Baustein 19000291 täglich von 0.00 - ca. 0.05 Uhr täglich ein paar Meldungen im Fehler-Log:
Vermutlich liegen für den Zeitraum einfach keine gültigen Werte vor?!?
Aber wie kann ich die Einträge im Fehler-Log vermeiden?
Viele Grüße,
Mucki
Vermeiden lassen sich die Fehler scheinbar nur wenn die LBS vom Code geändert würden. Leider fehlen mir die PHP Kenntnisse um genaueres sagen zu können. Vielleicht schaut sich Timberland (Ersteller) oder die anderen PHP Spezialisten mal an. Hatte die letzten 2 Tage mal so 800 Fehlermeldungen im Log.
Kommentar
-
Zitat von Robby Beitrag anzeigen
Das gleiche Problem habe ich auch mit dem 19000290 und 19000291. Da fehlen wohl Werte von der Netatmo Webseite.
Vermeiden lassen sich die Fehler scheinbar nur wenn die LBS vom Code geändert würden. Leider fehlen mir die PHP Kenntnisse um genaueres sagen zu können. Vielleicht schaut sich Timberland (Ersteller) oder die anderen PHP Spezialisten mal an. Hatte die letzten 2 Tage mal so 800 Fehlermeldungen im Log.
D.h. jedes
PHP-Code:setLogicLinkAusgang($id,15,@$module['dashboard_data']['XXXXXX']);
sollte ersetzt werden durch:
PHP-Code:if (array_key_exists('xxxxxx', $module['dashboard_data']) ($setLogicLinkAusgang($id,###,@$module['dashboard_data']['XXXXXX']);
else $setLogicLinkAusgang($id,###,'n/a');
Wobei XXXXXX der enstprechende Index ist und ### die Nummer des Ausgangs. Also z.B. "sum_rain_24" und "16".
Im "else" Teil des if Statements kann man natürlich auch etwas anderes ausgeben als "n/a". Fall das nichtvorhandensein des Index "sum_rain_24" bedeutet, dass dieser Wert 0 ist, dann ersetzt man das 'n/a' durch 0. Das müsste dann in der API Doku von Netatmo stehen.
Das "else" Statement kann man natürlich auch ganz weglassen, dann wird der entsprechende Ausgang nicht neu gesetzt und der letzte Wert bleibt erhalten.
Vielleicht hilft das ja ....
VG
AndréZuletzt geändert von jonofe; 28.09.2016, 13:41.
Kommentar
-
Zitat von Robby Beitrag anzeigen
Das gleiche Problem habe ich auch mit dem 19000290 und 19000291. Da fehlen wohl Werte von der Netatmo Webseite.
Vermeiden lassen sich die Fehler scheinbar nur wenn die LBS vom Code geändert würden. Leider fehlen mir die PHP Kenntnisse um genaueres sagen zu können. Vielleicht schaut sich Timberland (Ersteller) oder die anderen PHP Spezialisten mal an. Hatte die letzten 2 Tage mal so 800 Fehlermeldungen im Log.
http://service.knx-user-forum.de/?co...ad&id=19000530
weiter.
Kommentar
-
Zitat von timberland Beitrag anzeigen
Passt Du auch den 19000291 an? Bräuchte ich für Wind und Regen.
Vielen Dank im Vorraus
Kommentar
-
Zitat von timberland Beitrag anzeigenWelcher Ausgang macht beim 19000290 die Probleme? Dachte das ist nur der 19000291 mit dem sum_rain_24 Ausgang.
Kommentar
Kommentar