smartVISU - allgemeine Fragen

Begonnen von Jojo11, 02 Februar 2015, 18:57:43

Vorheriges Thema - Nächstes Thema

FlorianZ

ZitatDa müsste doch der shifter gehen, musst Dir nur die icons passend benennen.
http://docu.smartvisu.de/2.7/index.php?page=basic/widget_basic.shifter

Ja das ist genau das was ich gesucht habe.
Vielen Dank

vg
Florian

dev0

@Lutz: die original 2.8 hat das Problem nicht. Ich vermute, dass Du oder eines Deiner Widgets css Parameter überschreibt. Schau Dir die Icons mal mit Firebug an.

Cybers

#467
Hallo,

ich habe ein kleines Problem mit dem UZSU-Widget. Grundsätzlich läuft das Widget problemlos und nach dem Anlegen in Smartvisu steht dann in dem Reading "uzsu" meines Device folgendes:
{"active":true,"list":[{"value":"1","time":"09:00","rrule":"FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU","active":true,"event":"time","timeCron":"09:00","timeMin":"","timeMax":"","timeOffset":""},{"value":"0","time":"21:00","rrule":"FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU","active":true,"event":"time","timeCron":"21:00","timeMin":"","timeMax":"","timeOffset":""}]}

Damit läuft dann auch alles ohne Probleme. Mache ich dann aber ein shutdown restart, dann steht in dem Reading "uzsu" auf einmal:
{"active":true,"list":[{"value":"on","time":"09:00","rrule":"FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU","active":true,"event":"time","timeCron":"09:00","timeMin":"","timeMax":"","timeOffset":""},{"value":"0","time":"21:00","rrule":"FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU","active":true,"event":"time","timeCron":"21:00","timeMin":"","timeMax":"","timeOffset":""}]}

Den Unterschied habe ich mal rot markiert. Das Resultat ist, daß mir der Schalter in dem UZSU-Widget in Smartvisu jetzt was falsches darstellt weil er ja mit "on" nichts anfangen kann. Wenn ich den Schalter wieder auf "Ein bzw. 1" klicke und dann "Save & Quit" klicke, habe ich in Fhem wieder alles so wie es sein soll - bis zum nächsten Restart. Das ganze ist insofern ärgerlich, da man nach jedem Fhem-Update wieder alle UZSU-Devices in Smartvisu umstellen muß.

Was kann das sein?

Edit: rot markieren geht nicht im Code. Unterschied ist hinter dem ersten value: Original muß da "1" stehen, nach dem Restart steht da "on"

Gruß, Sascha

FHEM 6.3 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

cruser1800

Zitat von: dev0 am 13 Juli 2015, 18:08:05
@Lutz: die original 2.8 hat das Problem nicht. Ich vermute, dass Du oder eines Deiner Widgets css Parameter überschreibt. Schau Dir die Icons mal mit Firebug an.

Danke! Ich habs gefunden. Das icon0 wird überschrieben und ist kleiner! Jetzt werde ich es erweitern.

LG Lutz

dev0

@Sascha: wird in uzsu_execute() ein speichern der Konfiguration aufgerufen?

Cybers

Du meinst die Änderung in der fronthemUtils aus einem Beitrag weiter oben. Das habe ich eingebaut und die Raute davor entfernt.

Gruß Sascha
FHEM 6.3 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

dev0

Ja, das meinte ich. Was passiert, wenn du die Zeit über das Widget setzt, in FHEM manuell speicherst und dann neu startest?

fidel

#472
Hi,

ich habe mir heute mal neue Versionen der UZSU  und der fronthemUtils drauf gemacht und dabei festgestellt, dass die UZSU nicht wie gewohnt funktioniert.

Der Log sieht folgendermaßen aus:
2015.07.13 20:33:23 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/99_fronthemUtils.pm line 40.
2015.07.13 20:33:23 1: PERL WARNING: Use of uninitialized value in string ne at ./FHEM/99_fronthemUtils.pm line 45.
2015.07.13 20:33:23 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/99_fronthemUtils.pm line 49.
2015.07.13 20:33:23 1: PERL WARNING: Use of uninitialized value in multiplication (*) at ./FHEM/99_fronthemUtils.pm line 49.
2015.07.13 20:33:23 5: Cmd: >defmod wdt_uzsu_RXV_Zeitschaltung WeekdayTimer RXV_Zeitschaltung en   MO,TU,WE,TH,FR|{_abs("REAL",0,,)}|1 MO,TU,WE,TH,FR|{_abs("REAL",0,,)}|0 SA,SU|{_abs("REAL",0,,)}|1 SA,SU|{_abs("REAL",0,,)}|0<
2015.07.13 20:33:23 3: [wdt_uzsu_RXV_Zeitschaltung] Undefined subroutine &main::_abs called at (eval 976) line 1. >>>{ my $date=1436812403.11404;{_abs("REAL",0,,)}}<<<


Vorher wurde der Weekday Timer nicht mit "_abs" angelegt.
Fehlt das vielleicht n sunrise oder sunset vor dem _abs in der sub UZSU_execute($$)


Gruß

Steven
Fhem 5.6 auf Cubietruck,CUL,CUL_TCM97001,FritzBox7390,HMLAN,CUL_HM_HM_OU-16LED,CUL_HM_HM_SEC_SC,CUL_HM_HM_LC_SW4,CUL_HM_HM_RT_DN,HUEBridge,HUEDevice,Panstick,Panstamp (binouts,rgddriver mit dht22),PHTV,Yamaha-AVR,Withings,ELV-IPS, etc...

bgewehr

Das sieht so aus, als ob zwar Sunrise gewählt ist, aber dann doch nicht richtig ankommt (soll ja sunset_abs heißen, Sunset fehlt aber). Kann nur sagen, dass es bei mir so läuft. Mal die Uzsu neu angelegt?
FritzBox 7590, Synology DS216+II mit Docker
Docker: FHEM mit hmlan, Homebridge, node-red, mosquitto, ems-collector für Buderus EMS mit AVR Net-IO
Gartenwasser über MQTT auf R/Pi A+
Volkszaehler.org auf R/Pi 2B mit Pi_Erweiterung
Raspberrymatic auf R/Pi 4B mit RPI-RF-MOD u. CUL868

Cybers

@dev0: so ich habe es gerade versucht:
Zeit im Smartvisu-Widget eingestellt -> Das Reading in Fhem ist mit "value":"1" richtig
in Fhem "Save config" angeklickt -> Das Reading in Fhem ist mit "value":"1" richtig

in Fhem "shutdown restart" gemacht -> Das Reading in Fhem ist mit "value":"on" falsch

So ist mein Device definiert:
define Schalter_Garten_01 CUL_HM 38400D01
attr Schalter_Garten_01 alias Wegbeleuchtung Garten
attr Schalter_Garten_01 devStateIcon 1:power_button 0:power_button_rot
attr Schalter_Garten_01 eventMap on:1 off:0
attr Schalter_Garten_01 group Schalter
attr Schalter_Garten_01 model HM-LC-SW4-DR
attr Schalter_Garten_01 peerIDs 00000000,
attr Schalter_Garten_01 room Garten
attr Schalter_Garten_01 webCmd on:off


So sieht meine FronthemUtils aus:
##############################################
# $Id: 99_fronthemUtils.pm 0 2015-11-10 08:00:00Z herrmannj $
package main;

use strict;
use warnings;
use JSON;

sub
fronthemUtils_Initialize($$)
{
  my ($hash) = @_;
}

sub fronthem_decodejson($) {
return decode_json($_[0]);


sub fronthem_encodejson($) {
return encode_json($_[0]);



use JSON;

###############################################################################
#
# Umsetzen der UZSU-Settings für ein device
#
###############################################################################





sub UZSU_execute($$)
{
my ($device, $uzsu) = @_;


$uzsu = decode_json($uzsu);

if ($uzsu->{active}){
my $weekdays_part = " ";
for(my $i=0; $i < @{$uzsu->{list}}; $i++) {
     my $weekdays = $uzsu->{list}[$i]->{rrule};
     $weekdays = substr($weekdays,18,50);
     if (($uzsu->{list}[$i]->{active})) {
         if ($uzsu->{list}[$i]->{event} eq 'time'){
         $weekdays_part = $weekdays_part.' '.$weekdays.'|'.$uzsu->{list}[$i]->{time}.'|'.$uzsu->{list}[$i]->{value};

         }
       else {
          # Bugfix below: because sunset_abs from 99_sunrise_el does not work if max-time = ""
          if ($uzsu->{list}[$i]->{timeMin} ne '' and $uzsu->{list}[$i]->{timeMax} ne '') {
            $weekdays_part = $weekdays_part.' '.$weekdays.'|{'.$uzsu->{list}[$i]->{event}.'_abs("REAL",'.$uzsu->{list}[$i]->{timeOffset} * 60 .',"'.$uzsu->{list}[$i]->{timeMin}.'","'.$uzsu->{list}[$i]->{timeMax}.'")}|'.$uzsu->{list}[$i]->{value};

          }
          else {
          $weekdays_part = $weekdays_part.' '.$weekdays.'|{'.$uzsu->{list}[$i]->{event}.'_abs("REAL",'.$uzsu->{list}[$i]->{timeOffset} * 60 .',,)}|'.$uzsu->{list}[$i]->{value};





          }
       }
     }
}
fhem('defmod wdt_uzsu_'.$device.' WeekdayTimer '.$device.' en '.$weekdays_part);
fhem('attr wdt_uzsu_'.$device.' room UZSU');

# fhem('save');   # use only if you want to save WDT settings immediately.
}
}

package fronthem;
use strict;
use warnings;

###############################################################################
# For use with UZSU-Widget in SV and UZSU-notify in fhem
# Setreading a device reading using JSON conversion (gadval => reading=decode_json() => setval => encode_json(reading) )
# the reading ("uzsu") must be created manually for each UZSU-enabled device in fhem using "setreading <device> uzsu {}"
# in the fhem commandline
###############################################################################
sub UZSU(@)
{
  my ($param) = @_;
  my $cmd = $param->{cmd};
  my $gad = $param->{gad};
  my $gadval = $param->{gadval};

  my $device = $param->{device};
  my $reading = $param->{reading};
  my $event = $param->{event};
 
  my @args = @{$param->{args}};
  my $cache = $param->{cache};

  if ($param->{cmd} eq 'get')
  {
    $param->{cmd} = 'send';
  }
  if ($param->{cmd} eq 'send')
  {
    $param->{gad} = $gad;
$param->{gadval} = main::fronthem_decodejson(main::ReadingsVal($device, $reading, ''));
$param->{gads} = [];
    return undef;
  }
  elsif ($param->{cmd} eq 'rcv')
  {
$gadval = main::fronthem_encodejson($gadval);
$gadval =~ s/;/;;/ig;
$param->{result} = main::fhem("setreading $device $reading $gadval");
$param->{results} = [];
    return 'done';
  }
  elsif ($param->{cmd} eq '?')
  {
    return 'usage: UZSU';
  }
  return undef;
}

###############################################################################
#
# connect fhem device with on|off state to switch
#
###############################################################################
sub AnAus(@)
{
  my ($param) = @_;
  my $cmd = $param->{cmd};
  my $gad = $param->{gad};
  my $gadval = $param->{gadval};

  my $device = $param->{device};
  my $reading = $param->{reading};
  my $event = $param->{event};
 
  my @args = @{$param->{args}};
  my $cache = $param->{cache};

  if ($param->{cmd} eq 'get')
  {
    $event = ($reading eq 'state')?main::Value($device):main::ReadingsVal($device, $reading, 'aus');
    $param->{cmd} = 'send';
  }
  if ($param->{cmd} eq 'send')
  {
    $param->{gad} = $gad;
$param->{gadval} = (lc($event) eq 'an')?'1':'0';
$param->{gads} = [];
    return undef;
  }
  elsif ($param->{cmd} eq 'rcv')
  {
$param->{result} = ($gadval)?'an':'aus';
$param->{results} = [];
    return undef;
  }
  elsif ($param->{cmd} eq '?')
  {
    return 'usage: AnAus';
  }
  return undef;
}

#################################
#                               #
#                               #
#                               #
#################################
sub DirectSetReading(@)
{
  my ($param) = @_;
  my $cmd = $param->{cmd};
  my $gad = $param->{gad};
  my $gadval = $param->{gadval};

  my $device = $param->{device};
  my $reading = $param->{reading};
  my $event = $param->{event};
 
  my @args = @{$param->{args}};
  my $cache = $param->{cache};

  if ($param->{cmd} eq 'get')
  {
    $event = ($reading eq 'state')?main::Value($device):main::ReadingsVal($device, $reading, '');
    $param->{cmd} = 'send';
  }
  if ($param->{cmd} eq 'send')
  {
    $param->{gad} = $gad;
$param->{gadval} = $event;
$param->{gads} = [];
    return undef;
  }
  elsif ($param->{cmd} eq 'rcv')
  {
$param->{result} = main::fhem("setreading $device $reading $gadval");
$param->{results} = [];
    return undef;
  }
  elsif ($param->{cmd} eq '?')
  {
    return 'usage: Direct';
  }
  return undef;
}



1;

=pod
=begin html

<a name="fronthemUtils"></a>
<h3>fronthemUtils</h3>
<ul>
</ul>
=end html
=cut
FHEM 6.3 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

dev0

Zitat von: Cybers am 14 Juli 2015, 08:25:54

attr Schalter_Garten_01 eventMap on:1 off:0
Entferne mal das eventMap Attribut und dann noch mal von vorne: UZSU setzen, kontrollieren, speichen, restart.

Cybers

#476
@dev0: der Fehler kommt durch das eventMap Attribut. Eigenartig ist das der Fehler nur bei 1/on auftritt und nicht bei 0/off.
Scheint ein Bug in EventMap zu sein. Wer ist denn für eventMap zuständig?
Da sich die Homematic-Geräte ja nur durch on und off schalten lassen, brauche ich eventMap. Oder gibt es da eine andere Lösung?

Gruß, Sascha
FHEM 6.3 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

marvin78

Warum sollte man auf 1 und 0 mappen? Aber doch nicht für smartVisu, oder? Dafür gibt es doch den OnOff-Converter.

bgewehr

Man kann doch die UZSU auf ON und OFF einstellen, dann braucht man keine Eventmap!
FritzBox 7590, Synology DS216+II mit Docker
Docker: FHEM mit hmlan, Homebridge, node-red, mosquitto, ems-collector für Buderus EMS mit AVR Net-IO
Gartenwasser über MQTT auf R/Pi A+
Volkszaehler.org auf R/Pi 2B mit Pi_Erweiterung
Raspberrymatic auf R/Pi 4B mit RPI-RF-MOD u. CUL868

Cybers

@bgewehr: wenn ich UZSU auf On und Off einstelle, habe ich den Flip-Switch nicht mehr. Das Problem hatte ich in dem alten UZSU Thread schon mal diskutiert. Demnach brauche ich für Smartvisu 1 und 0 und in Fhem on und off.
FHEM 6.3 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel