***gelöst*** fhem Auslagerung von Dummy-Werten Zugang Web/MAC für Anwesenheit

Begonnen von Andy_C, 10 Juni 2020, 14:11:52

Vorheriges Thema - Nächstes Thema

Andy_C

Hallo Joachim,

das hört sich schon sehr komplex an :-\ ... also wie ich das lese müsste ich in dem Sub dann prüfen?  Dann müsste ich meine alte Steuerung komplett erneuern... oder statt dem local-bluethooth dann eine erstellte Funktion an presence übergeben Hatte mir gedacht, da es nur um die MAC als Variable geht könnte ich sonst Alles lassen.


define Pr_Handy1 PRESENCE local-bluetooth XX:XX:XX:XX:XX:XX 60 120


Wollte eigentlich "nur" an der Stelle mit den XX die Mac eben mit dem Wert vom Dummy ersetzen. Der Dummy ist ein ganz einfach erstellter Dummy, der im State die MAC genau so wie Presence sie erwartet steht.

Im Fhem arbeite ich sowieso damit, aber interne übrgebe ich ja nur die Dummys und die funktionieren im Presence nicht... und bei der Mailfunktion in der myutils frage ich die Dummys ab, gebe sie aber (glaube ich) nicht in fhem zurück, sondern werden an sendmail übergeben... und so fehlt mir der Weg von myutils nach fhem den Wert einer Variablen einfügen zu können....

Bei Ftui die Dummy-Werte über Freitext oder Dropdown zu ändern ist relativ einfach... mache ich schon bei den Jalousien, Heizung, Heizzeiten ect.... 

viele Grüße, Andy


MadMax-FHEM

#16
So einmal noch und dann "kann ich nicht mehr" ;)

Also was du nutzt ist Standard BT-PRESENCE.

Die ist halt wie sie ist!
Wenn du was anders haben willst: programmier das Modul um... ;)

Du kannst ja wie von Otto vorgeschlagen die MAC aus einem Dummy auslesen und beim define angeben.
Der define wird aber halt EINMALIG gemacht (normalerweise). So ist das Modul eben.

Wenn du in einem Dummy dann eine MAC änderst ist das dem BT-Presence-Device egal, es ist ja bereits definiert/angelegt.
Einziges was hilft: notify auf MAC-Änderung und ein "redefine" (defmod) des bestehenden BT-Presence-Device -> rotes Fragezeichen, weil ja cfg-Änderung...


Alternative OHNE cfg-Änderung:

die bestehenden Presence-Devices ändern in Funktionsprüfung (siehe anfangs verlinktes Beispiel).
Alles was auf DIESE Presence-Devices "hört" (also alle daran hängenden Automatismen) können UNVERÄNDERT bleiben (sofern du den Namen nicht änderst ;)  )!

ABER: du musst eben die Anwesenheitsprüfung selbst implementieren, weil das Presence mit eigener Funktion halt "nur" diese zyklisch aufruft und halt den Status zur Verfügung stellt (der von der Funktion/Sub gemeldet wird)...

In dieser Sub kannst du jedes Mal (wenn das Presence Modul sie aufruft) aus dem Dummy per ReadingsVal/AttrVal/... die jeweilige MAC auslesen und dann eben mit GENAU dieser (immer aktuellen, weil immer as dem Dummy gelesen) prüfen.

So schwer sollte eine BT-MAC erkennung nicht, auf Linux gibt es genug "Shell-Tools"...
D.h. das was dann in dem verlinkten Beispiel im presence.sh passiert musst du halt umändern in BT-Aufrufe (also statt hping3 und arp-irgendwas halt z.B. hcitool scan: https://www.pcsuggest.com/linux-bluetooth-setup-hcitool-bluez/   und "schauen", ob die gesuchte MAC dabei ist -> present 1 zurück oder eben nicht -> absent 0 zurück geben  /  und Code für prüfen, ob eine MAC dabei ist, ist ja in dem Codebeispiel [presence.sh] ja auch schon drin ;)  )...


Und wie halt immer: wenn man etwas will, was eben etwas "neben dem Normalen" ist, dann muss man halt ein wenig Arbeit reinstecken...
...oder den einfachen (aber nicht schönen Weg) gehen und mit dem roten Fragezeichen leben (oder eben ein "autom. save" dahinter schicken mit allen Risiken die es geben kann [also es wird was gespeichert, was man eigentlich nicht speichern wollte etc. ;)  ]  )


Weitere Alternative: du findest jemanden, der genau dieselbe "exotische" Anwendung hat und sich bereits besser auskennt und es einfach mal "runterprogrammiert"... ;)

EDIT: weitere Hilfe kann ich leider erst (wieder) geben, wenn konkrete Fragen/Probleme auftreten. Dann gerne wieder melden :)

Gruß und viel Erfolg, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Andy_C

Hallo Joachim und Otto,

hatte da echt ein Brett vor dem Kopf  ::).  Ihr hattet mir ja eh schon Alles fast aufs Brot geschmiert. Läuft nun bei mir... Vielen Dank an Euch für Eure Geduld ;-)!

anbei noch die angepasste Lösung falls das Jemand benötigen kann:

presence.sh Script:


#!/bin/bash

declare -a DEVICES
DEVICES=`hcitool name $1`
if [[ ${DEVICES[*]} > 0 ]]
then
echo "1"
else
echo "0"
fi



dann das Sub:


sub CheckPhoneBt($)
{
  my ($mac)= @_;
  my $ret = "";

  $mac = lc($mac);

  $ret = qx(/opt/fhem/FHEM/presence.sh $mac);

  if ( $ret != 0 && $ret != 1) {
    Log3 "CheckPhoneBt", 2, "CheckPhoneBt: $ret";
    return 0;
  }

  $ret =~ s,[\r\n]*,,g;        # remove CR from return-string

  return $ret;

}



und die Abfrage im presence über einen Dummy:

function {CheckPhoneBt(Value("HandyBtMac1"))} 60 120


viele Grüße, Andy

MadMax-FHEM

Hi Andy,

da bin ich aber froh, dass das Brett weg ist...
...und dann praktisch komplett ohne weitere Hilfe (plötzlich)... :)

Packst du noch ein [gelöst] vor den ersten Post, danke.

Viel Spaß damit, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

Äh, aber wo ist jetzt die Flexibilität!?

Ich sehe nirgendwo eine dynamische "Abfrage" der MAC!!?

Oder hab ich das auf dem Handydisplay nur "übersehen"!?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Andy_C

Über Fhem gebe ich (steht im Dummy) die Bluetooth-Mac mit (könnte natürlich auch direkt die MAC sein).... im Sub rufe ich hcitool mit der Option "Name" auf und schicke die Bluetooth-Mac als $1 mit. Hcitool gibt mir den Namen zurück, wenn die MAC nicht gefunden wird bleibt sie leer... Wert 1 oder 0 . Flexibel ist nur die BT-MAC, mehr brauche ich ja bei Bluetooth nicht... ich habs nicht richtig gelesen, MAC ist dynamisch... fällt nur nicht auf weil ich die erst über den Dummy hole ;-)

function {CheckPhoneBt("XX:XX:XX:XX:XX:XX")} 60 120

MAC darf nur nicht 00:00:00:00:00:00 sein (bei nicht genutzem Handy)


viele Grüße, Andy



 

MadMax-FHEM

Ah nö, sorry, hatte nur das "Value()" überlesen... ;)

Allerdings: Value "frägt" STATE ab! Nicht state und eben KEIN Reading...

Daher nehme ich das nie...
...sondern lieber ReadingsVal, dann weiß ich was ich "lese" und krieg auch mit ("Ersatzwert"), wenn was "schräg" läuft...

STATE "gehört" dem Modul, ist meist gleich state (aber nicht immer) und kann "beeinflusst" sein (z.B. stateFormat)...

Nur falls du dich mal "wunderst" warum plötzlich keine (passende) MAC mehr kommt... ;)

Bei einem Dummy nicht so wild...
...aber bei "komplexeren" Modulen hat sich schon manch einer gewundert, was er denn da bekommt bzw. was denn "schief" läuft...

Weitere Anmerkung (hatte ich schon mal genannt ;)  ): evtl. überlegen einen Dummy mit je einem Reading pro Gerät/MAC und dann Abfrage mit ReadingsVal...

Sparst du ein paar dummy ;)
Und ist evtl. übersichtlicher nur einen dummy zu haben wo alle MAC drin stehen...
Einzelne Readings EINES Devices sollten sich doch auch (ganz einfach) per FTUI (oder sonstwas Grafik) "einstellen" lassen!?
Aber musst nat. du wissen... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Andy_C

Hallo Joachim,

das ist ein gute Idee.... akutell frage ich überall nur den STATE ab. Im FTUI wird das sicher auch recht einfach gehen, schau ich mir auf jeden Fall an.

Jetzt habe ich nur noch das Problem, daß ich den Hash von Alexa mit dem Zugang zur Weboberfläche mit updaten muss.. da werde ich noch ein notify machen... und dann gehts ans überarbeiten der Dummys ;-)

viele Grüße, Andy

MadMax-FHEM

Hash von Alexa??

Was musst du da denn tun!?

Welches Alexa!? ;)

alexa-fhem Connector (hoffe nicht "das alte Zeugs"! ;)  )

oder echodevice-Modul?

Wobei ich jetzt bei beidem nicht wüsste wo da ein hash oder was anderes übergeben werden müsste...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Andy_C

Hallo Joachim,

ich bin gestern doch erst das mit den Dummy's angegangen. Einige Dinge sind schon umgestellt, unter Anderem die MAC's für die Anwesenheitserkennung... war eine super Idee und klappt auch mit Ftui problemlos ;-). Die alte Alexa habe ich ja vor Kurzem auf den Connector umgestellt.... ich habe doch die Änderung der Anmeldedaten im FhemWeb. Nach der Änderung dort funktioniert natürlich Alexa nicht mehr weil sie ja auch mit den Anmeldedaten arbeitet (wenn man das Web geschützt hat übernimmt er anscheinend die Daten, aber nach einer Änderung startet der Connector erst nach Eingabe der neuen Credentials. Über die Änderung des Attributes


attr alexa alexaFHEM-auth username:passwort


müssen dann die Login-Daten auch für Alexa neu generiert werden und dann läuft wieder Alles. Mal sehen ob ich da die Dummys reinsetzten kann oder eine Funktion erstellen muss. Eigentlich wäre es ja in Fhem und sollte auch über fhem funktionieren... aber ich weis nicht was im Background passiert... Will das dann in ein notify bei Änderung der Dummys setzen.

viele Grüße, Andy

Andy_C

Hallo Joachim,

falls Du das aus dem stehgreif weist... kann ich die setlist auch auf readings der Dummy's verwenden? Ich hatte ja bisher auch Dummy's für Heizung, Jalousien (Zeiten, Temperaturen, Absenkungen) ect., welche ich auch ganz gern umstellen würde. Allerdings verwende ich für die Einstellungen Drop-Downs im Ftui, die auf die setlist zugreifen.

Wenn ich das mit dem Hash bei Alexa hinbekomme kann ich das ja auch bei dem webauth machen... dann muss sich schon Jemand in den Code hineinversetzen um herauszufinden welches reading von welchem Dummy verwendet wird ;-).

viele Grüße, Andy

Andy_C

So, Alexa funktioniert nach PW-Wechsel über das Notify. Leider sehe ich keine Möglichkeit das variabel zu gestalten...:


sub ChangeCredAlexa()
{
  my ($wuser)= @_;
  my ($wpwd)= @_;
  my $ret = "";

  $wuser = ReadingsVal("Du_FhemWeb","FhemWebUser","");
  $wpwd = ReadingsVal("Du_FhemWeb","FhemWebPwd","");

  $ret = fhem("attr alexa alexaFHEM-auth $wuser:$wpwd");

  $ret =~ s,[\r\n]*,,g;        # remove CR from return-string

  return $ret;

}


Notify Jeweils auf User und Passwort:


Du_FhemWeb:FhemWebUser:* {ChangeCredAlexa()}



Muss ich also für Fhemweb extra schauen...

Gruß, Andy

MadMax-FHEM

Hi Andy,

eieiei, ganu schön viel passiert...

Muss ich mir mal in Ruhe durchlesen...

Dauert aber bissi, bin grad untetwegs...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

Zitat von: Andy_C am 13 Juni 2020, 14:19:18
Hallo Joachim,

ich bin gestern doch erst das mit den Dummy's angegangen. Einige Dinge sind schon umgestellt, unter Anderem die MAC's für die Anwesenheitserkennung... war eine super Idee und klappt auch mit Ftui problemlos ;-). Die alte Alexa habe ich ja vor Kurzem auf den Connector umgestellt.... ich habe doch die Änderung der Anmeldedaten im FhemWeb. Nach der Änderung dort funktioniert natürlich Alexa nicht mehr weil sie ja auch mit den Anmeldedaten arbeitet (wenn man das Web geschützt hat übernimmt er anscheinend die Daten, aber nach einer Änderung startet der Connector erst nach Eingabe der neuen Credentials. Über die Änderung des Attributes


attr alexa alexaFHEM-auth username:passwort


müssen dann die Login-Daten auch für Alexa neu generiert werden und dann läuft wieder Alles. Mal sehen ob ich da die Dummys reinsetzten kann oder eine Funktion erstellen muss. Eigentlich wäre es ja in Fhem und sollte auch über fhem funktionieren... aber ich weis nicht was im Background passiert... Will das dann in ein notify bei Änderung der Dummys setzen.

viele Grüße, Andy

Du könntest auch ein zweites FHEMWEB-Device mit anderem Port und fixen Zugangsdaten anlegen, den anderen Port dann in die alexa-fhem.cfg eintragen...
...und die fixen Zugangsdaten dann einmalig setzen und gut...

Bzw. warum änderst du (so oft) und über dummy!? Wie sicher ist das denn!? Die Zugangsdaten!?

Also nur damit ich verstehe was du warum so tust ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

Zitat von: Andy_C am 13 Juni 2020, 14:39:44
Hallo Joachim,

falls Du das aus dem stehgreif weist... kann ich die setlist auch auf readings der Dummy's verwenden? Ich hatte ja bisher auch Dummy's für Heizung, Jalousien (Zeiten, Temperaturen, Absenkungen) ect., welche ich auch ganz gern umstellen würde. Allerdings verwende ich für die Einstellungen Drop-Downs im Ftui, die auf die setlist zugreifen.

Wenn ich das mit dem Hash bei Alexa hinbekomme kann ich das ja auch bei dem webauth machen... dann muss sich schon Jemand in den Code hineinversetzen um herauszufinden welches reading von welchem Dummy verwendet wird ;-).

viele Grüße, Andy

Hi Andy,

ganz ehrlich: Bahnhof ;)

Sorry...
...und es liegt glaube ich nicht an der Uhrzeit ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)