Hallo,
ist es möglich, die Anzahl der bisherigen ausgelösten absenceThresholds auszulesen ?
Hintergrund ist, das beim Rasp3 gern mal das Bluetoothinterface aussteigt, bzw dessen Software.
Jetzt habe ich mir sowas hier gebasetelt:
sub resetHCIconfig {
my $hci_dev = "hci0";
system("sudo hciconfig $hci_dev down;sudo hciconfig $hci_dev up;");
}
.. und mit einem Presence-Interface verbunden. Wenn das auf maybe absent geht, wird resetHCIconfig() aufgerufen.
Ich würde das jetzt gern so einrichten, das erst bei x Versuchen der Reset ausgelöst wird, nicht gleich beim ersten. (Meist ist ja wirklich nur mal kurz das Signal weg)
Beim absent wäre es zu spät, denn dann wären schon Schaltungen ausgelöst und ich wäre auf Home Status Absent.
Meine Idee war, die Anzahl der bisherigen Versuche abzufangen. Die werden übers Terminal auch angezeigt, also irgendwie sollte es gehen ?
wenn du "attr global showInternalValues 1" setzt, bekommst du neue, "versteckte" readings, die mit einem punkt beginnen.
nun kannst du zb ein notify/userreading/doif auf "presence:.maybe.absent" triggern, das reading .absenceThresholdCounter entsprechend vergleichen und deine funktion ggf aufrufen.
Zitat von: frank am 21 Dezember 2017, 13:45:15
wenn du "attr global showInternalValues 1" setzt, bekommst du neue, "versteckte" readings, die mit einem punkt beginnen.
nun kannst du zb ein notify/userreading/doif auf "presence:.maybe.absent" triggern, das reading .absenceThresholdCounter entsprechend vergleichen und deine funktion ggf aufrufen.
Man man man ... schön mitgedacht ... das läßt vermuten das die Jungs selbst viel basteln und dadurch an ähnliche Fragestellungen kommen und entsprechend Lösungen zur Verfügung stellen .. oder zumindest immer am Ball sind. Find ich super :)
Das war genau was ich brauchte, ich sehe jetzt zumindest schonmal:
Readings
.absenceThresholdCounter
.presenceThresholdCounter
Vielen Dank!
Zitat von: frank am 21 Dezember 2017, 13:45:15
...readings, die mit einem punkt beginnen.
nun kannst du zb ein notify/userreading/doif auf "presence:.maybe.absent" triggern...
Lösen "hidden readings" tatsächlich Events aus? Ich habe nicht nachgesehen, habe es aber anders in Erinnerung.
Ok, das klappt, wenn ich direkt über das Notify des PresentDevice gehe:
pPresentDevice {
print "AbsentT: " .ReadingsVal($NAME,".absenceThresholdCounter","");
...
dann noch das:
event-on-update-reading .absenceThresholdCounter
Wenn ich allerdings aus einer Funktion heraus auslesen möchte, klappt das nicht. Woran könnte das liegen ?
sub resetHCIconfig {
my $absenceThresholdCounter = ReadingsVal($device,".absenceThresholdCounter","");
print "Absent Count: $absenceThresholdCounter\n";
}
Zitat von: dev0 am 21 Dezember 2017, 15:02:42
Lösen "hidden readings" tatsächlich Events aus? Ich habe nicht nachgesehen, habe es aber anders in Erinnerung.
Irgendwie nicht so richtig ne :D
Zitat von: dev0 am 21 Dezember 2017, 15:02:42
Lösen "hidden readings" tatsächlich Events aus? Ich habe nicht nachgesehen, habe es aber anders in Erinnerung.
bisher nein, zb auch nicht mit events-on-update.
aber deshalb habe ich ja auch extra das
normale presence reading als trigger vorgeschlagen.
Zitat von: ftsinuglarity am 21 Dezember 2017, 15:05:16
Wenn ich allerdings aus einer Funktion heraus auslesen möchte, klappt das nicht. Woran könnte das liegen ?
sub resetHCIconfig {
my $absenceThresholdCounter = ReadingsVal($device,".absenceThresholdCounter","");
print "Absent Count: $absenceThresholdCounter\n";
}
hier ist $device nicht definiert.
Zitat von: frank am 21 Dezember 2017, 15:12:32
bisher nein, zb auch nicht mit events-on-update.
aber deshalb habe ich ja auch extra das normale presence reading als trigger vorgeschlagen.
Das ist korrekt. Ich hatte state auch mit im update-reading. Wenn ich das rausnehme, wird nicht mehr getriggert.
Die Funktion liest jetzt auch direkt das Reading .absenceThresholdCounter, war meinerseits ein Fehler eingebaut (Übergabe über Zweitfunktion)
Zitat von: frank am 21 Dezember 2017, 15:22:28
hier ist $device nicht definiert.
Ja, hatte nur einen Teil der Funktion rauskopiert, den Parameter vergessen.
jetzt funktioniert also alles, oder fehlt noch etwas?
Nein, fehlt nichts mehr. Vielen Dank für die Hilfe!
Die readings sind übrigens auch verfügbar, wenn man das Attribut showInternalDingenskirchen nicht gesetzt hat. Man muss halt nur wissen, dass es solche readings geben könnte. Dann wirkt ein Blick in die Moduldatei oft Wunder und es fällt einem wie Klötze auf die Füsse...
Zitat von: betateilchen am 21 Dezember 2017, 19:02:34
Die readings sind übrigens auch verfügbar, wenn man das Attribut showInternalDingenskirchen nicht gesetzt hat.
Gut zu wissen.