FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: rockbaer2007 am 24 Oktober 2019, 18:38:34

Titel: stateFormat mit Uhrzeit
Beitrag von: rockbaer2007 am 24 Oktober 2019, 18:38:34
Hallo

leider habe ich von Perl noch nicht viel Ahnung, ich habe folgendes Problem.
Ich habe hier im Forum gefunden wie ich den Patronenstatus meines Epsondruckers abrufe. Jetzt möchte ich hier
<br>C: Cyan% M: Magenta% Y: Yellow% BK: Black%

vor den <br> den TimeStamp für den Zeitpunkt der letzten Abfrage davor haben.

Bei der Abfrage meines Canondruckers (Danke an Deubi für die Hilfe) hat es funktioniert siehe Bild, denn da wir ein Wert in state geschrieben.

mfg rockbaer / Uwe
Titel: Antw:stateFormat mit Uhrzeit
Beitrag von: Otto123 am 24 Oktober 2019, 19:22:54
Hallo Uwe,

raten wir mal: Du hast ein HTTPMOD Device? state Reading gibt es nicht? Was ist der Canon für ein Device? egal ...
machst Du:
attr Drucker userReadings last {ReadingsTimestamp($name,"Black","")}

und machst das stateFormat analog deinem Beispiel aber anstatt state nimmst Du last. Oder nennst das userReadings state :)

Gruß Otto
Titel: Antw:stateFormat mit Uhrzeit
Beitrag von: rockbaer2007 am 24 Oktober 2019, 19:44:43
Hallo Otto,

bei den Canon habe ich den Tipp von Deubi https://forum.fhem.de/index.php/topic,90601.msg870598.html#msg870598 (https://forum.fhem.de/index.php/topic,90601.msg870598.html#msg870598) benutzt

in der 99_myUtils habe ich folgendes drin
#
# Tintenstand Canon mittels ink beim Einschalten einmalig abfragen
#
sub Tintenstand_Canon {
  my $Black      = `/opt/scripts/TinteCanonBlack.sh`;
  my $Photoblack = `/opt/scripts/TinteCanonPhotoblack.sh`;
  my $Yellow     = `/opt/scripts/TinteCanonYellow.sh`;
  my $Magenta    = `/opt/scripts/TinteCanonMagenta.sh`;
  my $Cyan       = `/opt/scripts/TinteCanonCyan.sh`;
  #
  my $hash = $defs{'Tinte_Canon'};
  readingsBeginUpdate($hash);
  readingsBulkUpdate($hash,"black",$Black);
  readingsBulkUpdate($hash,"photoblack",$Photoblack);
  readingsBulkUpdate($hash,"yellow",$Yellow);
  readingsBulkUpdate($hash,"magenta",$Magenta);
  readingsBulkUpdate($hash,"cyan",$Cyan);
  readingsBulkUpdate($hash,"photogrey",$Photogrey);
  readingsEndUpdate($hash,1);
  $hash = ReadingsTimestamp("Tinte_Canon","black","???");
  fhem("set Tinte_Canon $hash");
}


dazu gehören noch Scripte

/usr/bin/ink -b bjnp://192.168.211.50 | awk '/Black:/ { print $NF }'

das hat mir Deubi so geschickt und da wird auch ein state gelesen.

Dazu gehört noch ein notify
defmod Canon_EventStart notify Canon:present {Tintenstand_Canon}

mfg rockbaer / Uwe

P.S. Danke Otto für die Hilfe es hat geklappt.
Titel: Antw:stateFormat mit Uhrzeit
Beitrag von: Otto123 am 24 Oktober 2019, 19:47:28
ok und der Epson?
Titel: Antw:stateFormat mit Uhrzeit
Beitrag von: rockbaer2007 am 24 Oktober 2019, 20:09:33
Hallo Otto,
erst einmal eine Gruss in die Heimat, habe jetzt erst gesehen das du aus Leipzig bist.

So und nun der Epson
define Epson HTTPMOD https://192.168.178.100/PRESENTATION/ADVANCED/INFO_PRTINFO/TOP 3600
attr Epson userattr reading01Expr reading01Name reading01Regex reading02Expr reading02Name reading02Regex reading03Expr reading03Name reading03Regex reading04Expr reading04Name reading04Regex reading05Expr reading05Name
attr Epson alias Epson Drucker
attr Epson group Drucker
attr Epson model model B_01b_epson_printer_cartridge_status
attr Epson reading01Expr $val * 2
attr Epson reading01Name Yellow
attr Epson reading01Regex Ink_Y.*?='([\d]+)'
attr Epson reading02Expr $val * 2
attr Epson reading02Name Cyan
attr Epson reading02Regex Ink_C.*?='([\d]+)'
attr Epson reading03Expr $val * 2
attr Epson reading03Name Magenta
attr Epson reading03Regex Ink_M.*?='([\d]+)'
attr Epson reading04Expr $val * 2
attr Epson reading04Name Black
attr Epson reading04Regex Ink_K.*?='([\d]+)'
attr Epson reading05Name mytime
attr Epson room Netzwerk
attr Epson stateFormat last<br><br>C: Cyan% M: Magenta% Y: Yellow% BK: Black%
attr Epson userReadings last {ReadingsTimestamp($name,"Black","")}


es ist ein Epson WF-2630

und wie es mit beiden Druckern aussieht , siehe Bild.

mfg rockbaer / Uwe