Autor Thema: [Gelöst] MQTT für WLED, rgb reading mit # klappt nicht  (Gelesen 26986 mal)

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 4179
  • ... wer sät, der erntet ...
Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
« Antwort #180 am: 20 Dezember 2021, 18:38:27 »
Natürlich hab ich nicht ins Log geschaut gehabt, auch wenn die Readings angelegt wurden gibts diese Meldung im Log:

2021.12.20 18:31:32 1: PERL WARNING: "my" variable $hash masks earlier declaration in same scope at (eval 46622) line 1.
2021.12.20 18:31:32 3: eval: my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{HttpUtils_NonblockingGet({url=>"http://192.168.188.95/json",callback=>sub($$$){my ($hash,$err,$data) = @_;;my $hash = $defs{$NAME};; json2reading($hash, $data, "", $hash->{JSONMAP},undef,"ver|col");;}})}
« Letzte Änderung: 20 Dezember 2021, 18:40:35 von TomLee »

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 4179
  • ... wer sät, der erntet ...
Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
« Antwort #181 am: 20 Dezember 2021, 18:44:05 »
So klappts auch ohne Meldung:

wled/538e36/c:.* {HttpUtils_NonblockingGet({url=>"http://192.168.188.95/json",callback=>sub($$$){my ($hash,$err,$data) = @_; json2reading($defs{$NAME}, $data, "", $hash->{JSONMAP},undef,"ver|col");}})}

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25475
Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
« Antwort #182 am: 20 Dezember 2021, 18:51:19 »
Es wuerde mich wundern, wenn $hash->{JSONMAP} das Richtige referenziert.

Mein Vorschlag:
wled/538e36/c:.* {HttpUtils_NonblockingGet({url=>"http://192.168.188.95/json",callback=>sub(){json2reading($defs{$NAME},$_[2],"",$defs{$NAME}{JSONMAP},undef,"ver|col");}})}
Wobei wenn $NAME funktioniert, dann sollte auch $JSONMAP direkt funktionieren.
(Sorry fuer den Hickhack, aber ein Testsystem aufzusetzen ist mir zu aufwendig).

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 4179
  • ... wer sät, der erntet ...
Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
« Antwort #183 am: 20 Dezember 2021, 19:04:50 »
Keine Meldung im Log, die Readings werden geschrieben, jsonMap funktioniert auch.

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18669
Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
« Antwort #184 am: 21 Dezember 2021, 10:04:09 »
@Beta-User: Sofern von Dir für gut erachtet könnte diese Version dann Einzug ins SVN halten.
...ist drin. Habe nur noch sehr kleine Kleinigkeiten angepaßt :) .
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Offline DeeSPe

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4524
  • Wer anderen eine Bratwurst brät...
    • Buy me a coffee
Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
« Antwort #185 am: 21 Dezember 2021, 12:16:03 »
...ist drin. Habe nur noch sehr kleine Kleinigkeiten angepaßt :) .

Merci!

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 4179
  • ... wer sät, der erntet ...
Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
« Antwort #186 am: 21 Dezember 2021, 16:26:37 »
Während ich mich vorhin mit etwas ganz anderem beschäftigt habe ist mir aufgefallen dass das ermitteln der IP viel simpler zu bewerkstelligen sein könnte.

my $ip = InternalVal($dev,$io.'_CONN',ReadingsVal($dev,'ip', undef)) =~ m/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/x ? $1 : return defined $event ? $c : undef;

=>

my $ip = InternalVal(InternalVal($dev,$io.'_CONN','none'),'PEER','none') // return defined $event ? $c : undef;
einfach nur auslesen, wäre doch auch eine Variante oder nicht ?  ;D 8) :P


Den Ersatzwert mit ReadingsVal($dev,'ip', undef) versteh ich nicht, das Reading gibts doch nicht und wird auch nicht irgendwo geschrieben.

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18669
Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
« Antwort #187 am: 21 Dezember 2021, 16:29:27 »
Die Regex sichert ab, dass was "sinnvolles" da steht, und das Reading gibt es zwar nicht, aber man kann es mit "setreading" setzen.

(Falls sich jemand fragt, wofür man das "braucht": es steht bereits hier im Thread ;) )
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 4179
  • ... wer sät, der erntet ...
Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
« Antwort #188 am: 21 Dezember 2021, 17:04:09 »
Zitat
Die Regex sichert ab, dass was "sinnvolles" da steht,

Du meinst wenn die MQTT2_Server-Verbindung nicht aktiv/definiert ist ? ja dann hinkt der Vorschlag.

Zitat
und das Reading gibt es zwar nicht, aber man kann es mit "setreading" setzen.

Ja ist es vergessen worden zu schreiben ? So steht einfach nur die Abfrage eines Readings im Ersatzwert das es gar nicht gibt ?

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18669
Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
« Antwort #189 am: 21 Dezember 2021, 17:15:23 »
Ja ist es vergessen worden zu schreiben ? So steht einfach nur die Abfrage eines Readings im Ersatzwert das es gar nicht gibt ?
Vorschläge zur Verbesserung der Doku (= attrTemplate-Text, in diesem Fall) nehme ich gerne entgegen...
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 4179
  • ... wer sät, der erntet ...
Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
« Antwort #190 am: 21 Dezember 2021, 17:38:28 »
Zitat
Vorschläge zur Verbesserung der Doku (= attrTemplate-Text, in diesem Fall) nehme ich gerne entgegen...

Das Reading ip im Device reicht mMn. völlig aus so wie man das aus anderen Devices auch gewohnt ist, ich verstehe nicht was es da zu dokumentieren gibt / wo wir aneinander vorbeireden.

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18669
Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
« Antwort #191 am: 21 Dezember 2021, 17:43:35 »
a) Na ja, du schreibst zurecht: in der Regel gibt es das Reading nicht.

b) Nutzt man MQTT2_SERVER braucht man es nicht, weil die IP-Adresse aus den vorhandenen Daten abgeleitet werden kann.

c) Man braucht es nur in einem Fall, aber dann muss man es händisch setzen.

So jedenfalls mein Verständnis.

Der Fall c) ist nicht dokumentiert, oder?
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 4179
  • ... wer sät, der erntet ...
Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
« Antwort #192 am: 21 Dezember 2021, 17:55:20 »
Zitat
c) Man braucht es nur in einem Fall, aber dann muss man es händisch setzen.

So jedenfalls mein Verständnis.

Der Fall c) ist nicht dokumentiert, oder?

Ich hab jetzt nochmal alle Beiträge überflogen in diesem Faden in denen ip vorkommt, ich steh weiterhin auf dem Schlauch was diesen einen geheimnisvollen  ;D Fall angeht, sry ich verstehs nicht.

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18669
Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
« Antwort #193 am: 21 Dezember 2021, 17:57:40 »
M2C als IO...
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Offline ComputerZOO

  • Full Member
  • ***
  • Beiträge: 243
Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
« Antwort #194 am: 30 Dezember 2021, 12:22:55 »
@ComputerZoo

Du wolltest das haben, mit dem Attribut jsonMap kann man die Readingnamen anpassen, mach mal Vorschläge.

 :o :o :o
Wir kommen der Sache schon näher...
tele/$DEVICETOPIC/c:.* { { "color"=>substr("$EVENT", 1, 6)} }erstellt mir ja das Reading für die (primäre) Farbe.
Jetzt wäre es natürlich schön, wenn es ähnlich dazu eine color2nd und color3rd geben würde die direkt den umgerechneten HEX-Wert beinhalten.
(Ich habe dazu hier im Forum mal diesen Code adaptiert:###############################################################################################
#
# wandelt Dezimale Werte in Hexadezimale Farbwerte um.
# dec2hex("0-255 0-255 0-255");
# z.B. "255, 0, 255" oder "255 0 255" ergibt als Rückgabewert ff00ff
#
sub dec2hex($;$) {
my ($color, $format) = @_;
my $dividerChar = " ";
$dividerChar = "," if ($color =~ /\,/);
$format = "lc" if (!$format);
my ($redValue, $greenValue, $blueValue) = split($dividerChar, $color);
customLog("./log/dec2hex.log", 3, "color: ".$color." red: ".$redValue." green: ".$greenValue." blue: ".$blueValue);
$redValue = sprintf("%02x", $redValue);
$greenValue = sprintf("%02x", $greenValue);
$blueValue = sprintf("%02x", $blueValue);
return "$redValue$greenValue$blueValue" if ($format eq "lc");
return uc($redValue).uc($greenValue).uc($blueValue) if ($format eq "uc");
}
und in der 99_myUtils.pm für verschiedene Dinge eingebunden).

Alternativ wäre es natürlich schön, wenn Aircoookie diese Werte direkt als MQTT-Topic zurückgeben würde...

EDIT: Sehe gerade das es sich bei der (übergebenen, primären) Farbe ja um ein eigenes Topic handelt...
« Letzte Änderung: 30 Dezember 2021, 12:36:46 von ComputerZOO »

 

decade-submarginal