Beschreibung:
Heute habe ich ein Beispiel wo es ums Zählen geht, ob Fenster Türen oder andere Sachen.
Vorraussetzung:
Paket/APP | Version | |
---|---|---|
* |
Schwirigkeitsgrad:
if($msg['payload'] == true){
$msg['payload'] = getFlowData('WindowCount')-1;
return $msg;
}
In den Funktions Nodes befindet sich lediglich eine Abfrage auf True sowie einmal Addieren einmal Subtrahieren oder alles auf 0 setzen. Im Template könnt Ihr dann eure Nachrricht eintragen die gesendet wird wenn alle Fenster geschlossen sind.
Namen der Fenster Ausgeben:
Da die frage wahrscheinlich sowieso kommt, hier noch wie ihr herausbekommt welche Fenster offen sind. Da Ihr wieder zu Faul seit um eure Füsse zu bewegen und nachschauen . Deshalb habe ich bzw. in diesem fall @pstebbe mal was vorbereitet :).
$category = 5;
$devices = $hg->getDevicesInCategory($category);
foreach ($devices as $peerID) {
try {
if ($hg->getValue($peerID, 1, 'ONOFF')) {
$openWindows[] = "- " . $hg->getName($peerID) . "\n";
}
continue;
} catch(Exception $e) {
//
}
try {
if ($hg->getValue($peerID, 1, 'STATE')) {
$openWindows[] = "- " . $hg->getName($peerID) . "\n";
}
continue;
} catch(Exception $e) {
//
}
}
$msg['date'] = $date = date('d.m.Y', time());
$msg['payload'] = ($openWindows ? implode('', $openWindows) : false);
$msg['count'] = count($openWindows);
$msg['devices'] = $openWindows;
return $msg;
Als erstes müsste Ihr alle Fensterkontakte die überprüft werden sollen, einer Gruppe zuordnen. Und die GruppenID in der Funktion’s Node, in die $category variable eintragen. Anschliessend werden euch alle Offenen Fenster ausgegeben die Ihr euch dann zb. Per Push senden könnt.
$category = 5;
ALL IN ONE
$category = 3;
$devices = $hg->getDevicesInCategory($category);
$count =0;
foreach ($devices as $peerID) {
try {
if ($hg->getValue($peerID, 1, 'STATE')) {
$openWindows[] =$hg->getName($peerID);
}
continue;
} catch(Exception $e) {
//
}
}
$msgOpenWindows['date'] = $date = date('d.m.Y', time());
$msgOpenWindows['payload'] = count($openWindows);
$msgOpenWindows['devices'] = $openWindows;
$msg['date'] = $date = date('d.m.Y', time());
$msg['payload'] = json_encode ($openWindows);
$msg['devices'] = $openWindows;
output(1, $msgOpenWindows);
output(0, $msg);
Hier ist noch eine ALL IN ONE Lösung wo in Ausgang 0, alle Fensterbezeichnungen als Json Array Ausgegben werden. Und in Ausgang 1 die Zahl der Offenen Fenster.
Hier noch der Flow als Json:
OpenWindows.json (20,9 KB)
Allinone.json (2,5 KB)
Wie immer Viel Spaß
Gruß
Michael
Weitere Beispiele Link
Und hier findest Ihr Video Tutorials für die Smartha Home Zentrale Link
Und hier findest Ihr Video Tutorials für die Smartha APP Link