Fragen zur Konfiguration von Templates

Begonnen von coolice, 06 Mai 2021, 18:13:47

Vorheriges Thema - Nächstes Thema

marboj

Zitat von: marboj am 20 Mai 2021, 06:59:20
schwierig zu beschreiben, deswegen ein Screenshot vom Handy...


Niemand eine Idee?
meine FHEM-Konfiguration: Raspberry Pi4, BT-Dongle, CUL868, CeeBee II

Jamo

Nein eine Idee habe ich auch nicht, aber es sieht so aus als hätte dein Handy keinen Zugriff auf das Bild, aus irgendeinem Grund. Irgendwas mit Netzwerk? GastNetz / Wlan? HTTPS?
Der PC haengt ja am Kabel - keine Ahnung.
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

jemu75

Zitat von: marboj am 20 Mai 2021, 06:59:20
schwierig zu beschreiben, deswegen ein Screenshot vom Handy...

Sorry, bin aktuell recht straff eingebunden. Da klappt es nicht immer gleich mit einer Antwort.
Wenn du dieses Bild siehst, dann heißt das, dass dein Bildlink nicht funktioniert. Du kannst den Link prüfen, indem du die URL mal separat in einem anderen Browserfenster aufrufst. Wichtig ist, dass es sich um einen Bildlink handeln muss. (jpg, mjpg, cgi) :)

marboj

das ist ja merkwürdig. Wenn ich die URL im Browser auf dem Handy eingebe, wird das Bild angezeigt. Auf dem Handy geht es nicht.

{ "template": "cam", "name": "Carport", "home": true, "setup": { "source": "http://xxxxx:xxxxx@192.xxx.xxx.xx/mjpeg/snap.cgi?chn=0" } }
meine FHEM-Konfiguration: Raspberry Pi4, BT-Dongle, CUL868, CeeBee II

jemu75

Zitat von: marboj am 20 Mai 2021, 21:48:59
das ist ja merkwürdig. Wenn ich die URL im Browser auf dem Handy eingebe, wird das Bild angezeigt. Auf dem Handy geht es nicht.

{ "template": "cam", "name": "Carport", "home": true, "setup": { "source": "http://xxxxx:xxxxx@192.xxx.xxx.xx/mjpeg/snap.cgi?chn=0" } }

Die Übergabe von Benutzer und Passwort in einem Link wird blockiert. Das funktioniert tatsächlich nur in der Eingabezeile des Browsers. Ist ja im Grunde auch sehr unsicher solche Daten permanent in einen Link zu packen. Da kannst du den Passwortschutz an der Camera auch rausnehmen. Wenn du bei Google mal suchst, findest du einiges zu dem Thema.  8)

marboj

meine FHEM-Konfiguration: Raspberry Pi4, BT-Dongle, CUL868, CeeBee II

jemu75

Zitat von: marboj am 20 Mai 2021, 22:20:14
ok, aber earum geht es am PC ???

Vielleicht hast du am PC einen anderen Browser im Einsatz?

MandelHL

Hallo,

erst mal vorweg: Das klappt ja super, vielen Dank jemu75.

Ich würde gerne einen Knopf basteln, der mir eine Aktion deaktiviert.

Wenn ich z.B. nicht möchte, dass mein Rolladen zu einer bestimmten Zeit nicht herunterfährt, weil ich noch draußen sitze.
Bisher habe ich dann über das WI "set" und dann auf "inactive" gewechselt.
Kann ich dafür nicht einfach einen Schalter/Knopf erstellen, der genau diese Funktion ermöglicht?

Grüße
Mandel

Benni

Zitat von: MandelHL am 26 Mai 2021, 23:22:04
Hallo,

erst mal vorweg: Das klappt ja super, vielen Dank jemu75.

Ich würde gerne einen Knopf basteln, der mir eine Aktion deaktiviert.

Wenn ich z.B. nicht möchte, dass mein Rolladen zu einer bestimmten Zeit nicht herunterfährt, weil ich noch draußen sitze.
Bisher habe ich dann über das WI "set" und dann auf "inactive" gewechselt.
Kann ich dafür nicht einfach einen Schalter/Knopf erstellen, der genau diese Funktion ermöglicht?

Grüße
Mandel

Magst du nicht endlich mal die Doku lesen und dir die darin enthaltenen Beispiele anschauen?

Ich nehme an, du steuerst das mit einem device vom Type "at" oder "DOIF". Das Device ist ein Device, wie jedes andere auch und kann entsprechend mit einem appOptions-Attribut für fhemapp konfiguriert werden. Ich könnte dafür das Template "switch" nehmen und statt "on" ein "active" senden und statt des "off" ein "inactive" und schon hast du was du möchtest.

Ich habe genau sowas bei mir an jedem (!) notify, watchdog und at
(doif habe ich nicht in Verwendung!)

gb#



MandelHL

#39
Danke Benni und sorry, ich hatte mich gestern schon intensiver mit der Doku beschäftigt und einige Einstellungen vorgenommen. Das hat auch super geklappt.

Der Hinweis mit dem Einstellen auf "active" und "inactive" statt "DOIF" ist klasse. Ich hatte das in meinem FHEM bisher komplizierter geregelt und werde es auch da ändern.

Habe mich aber tatsächlich schon gut durchgearbeitet.

EDIT:
Ich habe mir Deinen Thread #615 "https://forum.fhem.de/index.php/topic,120913.615.html" durchgelesen und auch meine 99_myUtils.pm um
Notify
sub newNotify_appOptions {
my $deviceName=shift;

Log3 'global',3,"newNotify_appOptions: $deviceName";

my $attrCmd="attr $deviceName appOptions ". << 'END_VAL';
{
  "panel": {
    "status": [
      "state:inactive:deaktiviert:0:success",
      "state::aktiv:100:success"
    ],
    "btn": [
      "state:inactive:mdi-toggle-switch-off",
      "state::mdi-toggle-switch"
    ],
    "click": [
      "state:inactive:active",
      "state::inactive"
    ]
  }
}
END_VAL

fhem $attrCmd;

}
und

at
sub newAt_appOptions {
my $deviceName=shift;

Log3 'global',3,"newAt_appOptions: $deviceName";

my $attrCmd="attr $deviceName appOptions ". << 'END_VAL';
{
  "panel": {
    "status": [
      "state:inactive:deaktiviert:0:success",
      "state::%s:100:success"
    ],
    "btn": [
      "state:inactive:mdi-toggle-switch-off",
      "state::mdi-toggle-switch"
    ],
    "click": [
      "state:inactive:active",
      "state::inactive"
    ]
  }
}
END_VAL

fhem $attrCmd;

}


ergänzt.

Aber nun hänge ich leider hier:
defmod fhemapp_global.defined notify global.DEFINED.* {\
my $newType=$defs{$EVTPART1}->{TYPE};;\
Log3 'global',3,"global.DEFINED new $newType: $EVTPART1";;\
\
if ($newType =~/\b(notify)\b/) {\
newNotify_appOptions($EVTPART1);;\
}\
if ($newType =~/\b(at)\b/) {\
newAt_appOptions($EVTPART1);;\
}\
}


Wo muss ich das denn eintragen? Bitte entschuldige, dass ich hier jetzt auch noch mal frage, aber ich stehe doch noch recht am Anfang.

Und dann bin ich dabei, den Switch etwas umzubauen, weil ich ja nur "aktiv" und "inaktiv" brauche.

Hier steckt ja noch viel mehr dahinter. Außerdem weiß ich nicht, wohin mit der Konfiguration, gehe aber davon aus, dass das gleich im Anschluss an ,,{ ,,Template": ,,switch"}," kommt:
{
  "name": "switch",
  "author": "jemu75",
  "date": "2021-03-21",
  "status": {
    "bar": ["state:on:100:success","state:off:0:success"],
    "error": ["Connected.receiver.Readings.Activity.Value:^(?!alive):100:error:keine Verbindung"]
  },
  "main": [
    {
      "leftBtn": "mdi-power-off",
      "leftClick": ["state::off"],
      "text": ["state:on:an","state:off:aus","state::%s"],
      "rightBtn": "mdi-power-on",
      "rightClick": ["state::on"]
    }
  ],
  "info": {
    "left1": ["state:on::mdi-power-plug","state:off::mdi-power-plug-off"],
    "left2": ["power:0.1:%n.2w"],
    "right2": ["Connected.receiver.Readings.Activity.Value:alive::mdi-wifi","Connected.receiver.Readings.Activity.Value:::mdi-wifi-off"]
  }
}


Tut mir leid, ich habe dazu echt nichts gefunden.

Ich glaube, das da oben war ziemlicher Quatsch. Das muss ich nirgendwo einfügen.
Das ist die Konfiguration, die sich hinter ,,templates": ,,switch" verbirgt.
Das muss ich jetzt mit ,,setup" entsprechend anpassen.
Klappt noch nicht, aber ich taste mich ran.

Allerdings weiß ich mit ,,fhemapp_global.defined" tatsächlich nichts anzufangen. Wo muss das hin?

Danke.


Thx
Mandel

Benni

Zitat von: MandelHL am 27 Mai 2021, 10:26:28
Ich glaube, das da oben war ziemlicher Quatsch. Das muss ich nirgendwo einfügen.
Das ist die Konfiguration, die sich hinter ,,templates": ,,switch" verbirgt.
Das muss ich jetzt mit ,,setup" entsprechend anpassen.
Klappt noch nicht, aber ich taste mich ran.

Allerdings weiß ich mit ,,fhemapp_global.defined" tatsächlich nichts anzufangen. Wo muss das hin?

Vergiss mal den ganzen Kram, das ist erst die Kür, du solltest mal mit dem Pflichtteil anfangen.

Wenn du in einem beliebigen notify oder at folgendes in appOptions einträgst, erscheint es auf dem Home-Screen von fhemapp und kann damit aktivert und deaktiviert werden:


{
"template": "switch",
"home": true,
"sortby": "1",
"setup": {
"status":
{
    "bar": [
        "state:inactive:0:success",
        "state:active:100:success"
    ]
        },
"main":
[{
"leftBtn": "mdi-power-off" ,
"leftClick": ["state::inactive"],
"text":
[
"state:inactive:deaktiviert" ,
"state:active:aktiviert" ,
"state::%s"
],
"rightBtn": "mdi-power-on" ,
"rightClick": ["state::active"]
}]
}
}


Ich habe mich hoffentlich auf die Schnelle nicht irgendwo vertippt!

gb#

MandelHL

Danke, Benni. Das hat natürlich auf Anhieb funktioniert.

Ich hatte es mit
{ "template": "switch", "setup": { "status": {"bar": ["state:active:100:success","state:inactive:0:success"],
    "error": ["Connected.receiver.Readings.Activity.Value:^(?!alive):100:error:keine Verbindung"]
  },}, "main": [{
      "leftBtn": "mdi-power-inactive",
      "leftClick": ["state::inactive"],
      "text": ["state:active:aktiviert","state:inactive:deaktiviert","state::%s"],
      "rightBtn": "mdi-power-active",
      "rightClick": ["state::active"]
    }], "info": {"left1": ["state:active::mdi-power-plug","state:inactive::mdi-power-plug-inactive"],
    "left2": ["power:0.1:%n.2w"],
    "right2": ["Connected.receiver.Readings.Activity.Value:alive::mdi-wifi","Connected.receiver.Readings.Activity.Value:::mdi-wifi-off"]} } }

probiert und hatte mich dabei an der Doku orientiert.

Aber so wie Du es gepostet hast, entspricht es genau dem, was ich brauchte.

Das werde ich auch anderweitig einsetzen.

Danke,
Mandel

Benni

Zitat von: MandelHL am 27 Mai 2021, 22:39:51
Danke, Benni. Das hat natürlich auf Anhieb funktioniert.

Ich hatte es mit
{ "template": "switch", "setup": { "status": {"bar": ["state:active:100:success","state:inactive:0:success"],
    "error": ["Connected.receiver.Readings.Activity.Value:^(?!alive):100:error:keine Verbindung"]
  },}, "main": [{
      "leftBtn": "mdi-power-inactive",
      "leftClick": ["state::inactive"],
      "text": ["state:active:aktiviert","state:inactive:deaktiviert","state::%s"],
      "rightBtn": "mdi-power-active",
      "rightClick": ["state::active"]
    }], "info": {"left1": ["state:active::mdi-power-plug","state:inactive::mdi-power-plug-inactive"],
    "left2": ["power:0.1:%n.2w"],
    "right2": ["Connected.receiver.Readings.Activity.Value:alive::mdi-wifi","Connected.receiver.Readings.Activity.Value:::mdi-wifi-off"]} } }

probiert und hatte mich dabei an der Doku orientiert.

Aber so wie Du es gepostet hast, entspricht es genau dem, was ich brauchte.


Freut mich, dass es so für dich funktioniert!

Noch ein Tip: JSON ist recht empfindlich. Um einen JSON-Block auf grundsätzliche syntaktische Richtigkeit zu prüfen, kann man auf entsprechende Online-Tools zurückgreifen (Bspw.: https://jsonformatter.curiousconcept.com/#). Wenn du dort deinen Versuch prüfen lässt, bekommst du die Fehler recht gut angezeigt!

Du warst im Prinzip schon auf dem richtigen Weg!  ;)

gb#

bismosa

Hallo!

Ist es eigentlich auch möglich nur eine Teilkonfiguration z.B. bei einem Switch zu verändern?
Hintergrund: Ich möchte bei einem Switch einen Timer mit einbauen. Also nur das Set-Kommando auf "set on-for-timer 300" setzen.
ich könnte mir dazu "einfach" ein Template erstellen. Würde es jedoch auch komfortabel finden, wenn ich z.B.:

{ "template": "switch","home": true,"dashboard": true,"setup": { "main": [{"leftClick": ["reading:value:set_param"]}]}}

nur einzelne Einstellungen überschreiben könnte. In meinem Beispiel wird mir nur noch ein leerer Button angezeigt...

Habe ich in der Doku etwas übersehen?

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

jemu75

Zitat von: bismosa am 01 Juni 2021, 21:19:14
Hallo!

Ist es eigentlich auch möglich nur eine Teilkonfiguration z.B. bei einem Switch zu verändern?
Hintergrund: Ich möchte bei einem Switch einen Timer mit einbauen. Also nur das Set-Kommando auf "set on-for-timer 300" setzen.
ich könnte mir dazu "einfach" ein Template erstellen. Würde es jedoch auch komfortabel finden, wenn ich z.B.:

{ "template": "switch","home": true,"dashboard": true,"setup": { "main": [{"leftClick": ["reading:value:set_param"]}]}}

nur einzelne Einstellungen überschreiben könnte. In meinem Beispiel wird mir nur noch ein leerer Button angezeigt...

Habe ich in der Doku etwas übersehen?

Gruß
Bismosa

Ich denke das sollte funktionieren, habe es selbst aber noch nicht ausprobiert. Dein Beispiel sieht soweit gut aus. Einzig die Definition hinter "leftClick" passt m.M. nach noch nicht.
Hier müsste z.B. "state::on-for-timer 300" rein. Probiere das bitte mal aus und melde dich, falls es nicht klappt.  :)