Neue Fullscreen Browser APP für Android (WebViewControl)

Begonnen von Dirk, 27 Januar 2013, 15:18:28

Vorheriges Thema - Nächstes Thema

mele

Zitat von: Tweak am 22 März 2015, 14:59:22
@mele
darf ich nur fragen was er dir bei der Ausgabe von "version" jetzt bei webviewcontrol anzeigt?

Danke

Vielleicht ne blöde Frage, aber wo finde ich das?
FHEM auf NUC/Proxmox (Rpi 2 / Rpi Zero W mit FHEM2FHEM, RFHEM)
Homematic/LaCrosse/PCA301/Shelly, Rollladen, Batterieaktor + Relais zur Schaltung Garagentor (Promatic 2), Xiaomi FlowerSens, Bewässerungssteuerung Garten und Gewächshaus, Weatherman und Landroid

marvin78

Das ist ne blöde Frage ;)

Gebe bitte version in die Kommandozeile von FHEM ein und füge die Zeile zu WVC hier ein.

mele

Zitat von: marvin78 am 22 März 2015, 20:25:37
Das ist ne blöde Frage ;)

Gebe bitte version in die Kommandozeile von FHEM ein und füge die Zeile zu WVC hier ein.

Sehr interessant: ./FHEM/95_webViewControl.pm: No such file or directory

Irgendwas scheint zu fehlen?
FHEM auf NUC/Proxmox (Rpi 2 / Rpi Zero W mit FHEM2FHEM, RFHEM)
Homematic/LaCrosse/PCA301/Shelly, Rollladen, Batterieaktor + Relais zur Schaltung Garagentor (Promatic 2), Xiaomi FlowerSens, Bewässerungssteuerung Garten und Gewächshaus, Weatherman und Landroid

Turbokid

Hallo Leute, bei mir geht die App mit dem Floorplan leider auch nicht mehr. Mit dem Rest jedoch schon.
Also habe ich mich mal auf die Suche gemacht und folgendes gefunden:

hier auszug aus dem Quelltext den bei Chrome anzeigt.
Im nicht floorplan:
<script attr='' type="text/javascript" src="/fhem/pgm2/cordova-2.3.0.js"></script><script type="text/javascript" src="/fhem/pgm2/webviewcontrol.js"></script><script type="text/javascript">var wvcDevices = {'12346': 'tabitab', '12345': 'WallTablet'}</script><script type="text/javascript" charset="UTF-8"></script>
<script attr='' type="text/javascript" src="/fhem/pgm2/dashboard.js"></script>


Im Floorplan:
<script attr='/fhem/pgm2/cordova-2.3.0.js"></script><script type="text/javascript" src="/fhem/pgm2/webviewcontrol.js"></script><script type="text/javascript">var wvcDevices = {'12346': 'tabitab', '12345': 'WallTablet'}</script><script type="text/javascript" charset="UTF-8' type="text/javascript" src=""></script>
<script attr='/fhem/pgm2/dashboard.js' type="text/javascript" src=""></script>

Wie das jetzt zustande kommt ka, aber vielleicht sieht einer Spezies wie der flasche Quellcode zusammengebaut wird im code?!

Klouse

Hallo,

ich wollte fragen ob bei euch WVC auch abstürzt wenn ihr da Tablet vom Ladestrom absteckt?

Besitze ein LG gPad mit Android 4.4.2.

MfG
Klaus

rainer1962

hallo an alle,
also ich habe auch große probleme mit dem wvc seit februar diesen jahres.
Ich habe das wvc entfernt und durch folgende dinge ersetzt:

paw-server auf tablet installiert. Stockbrowser für anzeige des floorplans genommen (war der einizige welcher auch nach reloaden den floorplan im fullbild modus dargestellt hat)

auf tablet folgendes script installiert (/sdcard/paw/html) : als get_daten.xhtml

<bsh>
import de.fun2code.android.pawserver.AndroidInterface;
import de.fun2code.android.pawserver.util.*;
import android.content.Intent;
import android.content.ContentResolver;
import android.app.Service;
import android.os.BatteryManager;
import android.content.Context;
import android.media.AudioManager;
import android.app.ActivityManager;
import android.app.ActivityManager.MemoryInfo;
import android.database.Cursor;
import android.net.Uri;
import android.net.wifi.WifiInfo;
import android.content.Context;

service = server.props.get("serviceContext");

para = parameters.get("text");
befehl = parameters.get("befehl");

if (para == null){para="none";}
if (befehl == null) {befehl="unknown";}

fehler="none";
ergebnis="error";

if (befehl == "unknown" || para == "none") {
  fehler="para ("+para+") oder befehl ("+befehl+") fehlerhaft";
  ergebnis="notok";
  print ("fehler="+fehler+" ergebnis="+ergebnis);
  return;
}

// sprachausgabe initiieren
if (befehl.equalsIgnoreCase("speak"))  {
  speak(para,new Locale("de", "DE"));
  ergebnis="ok";
}

// Batteriestand lesen
if (befehl.equalsIgnoreCase("batt"))  {
  intent = IntentUtil.getIntentResultFromBroadcast(service, Intent.ACTION_BATTERY_CHANGED);

  rawlevel = intent.getIntExtra("level", -1);
  scale = intent.getIntExtra("scale", -1);
  status = intent.getIntExtra("status", -1);
  if (rawlevel >= 0 && scale > 0) {
    level = (rawlevel * 100) / scale;
  }
// status : 2=laden, 3=nicht laden
  if (status == 2) {status="true";}
  if (status == 3) {status="false";}
 
//memory anzeigen
activityManager = (ActivityManager) service.getSystemService(Context.ACTIVITY_SERVICE);
    memInfo = new ActivityManager.MemoryInfo();
    activityManager.getMemoryInfo(memInfo);
memory_frei = (memInfo.availMem / 1024 /1024) + "M";
 
// system load
    source(server.props.get("serviceContext").pawHome + "/html/app/bsh/systemLoad.bsh");
    cpus = getCpus();
    load = getSystemLoad().get("load");
    systemload= load + "%"; 
// wifi anzeige
wifiService = service.getSystemService(Context.WIFI_SERVICE);
    // Check for connected WiFi network
    wifiInfo = wifiService.getConnectionInfo();
    wifiActive = false;
    if(wifiInfo != null && wifiInfo.getIpAddress() != 0) {
        wifiActive = true;
    }
    if(wifiActive) {
        SSID = wifiInfo.getSSID();
        if(SSID == null) { SSID = "unknown"; }

        linkspeed = wifiInfo.getLinkSpeed() + " " + WifiInfo.LINK_SPEED_UNITS;
        if(wifiInfo.getLinkSpeed() < 0) { linkspeed = "unknown"; }

        wifiStrengthPercent = (100 + wifiInfo.getRssi() + 20);

         // Not sure if this is correct
        if(wifiStrengthPercent > 100) { wifiStrengthPercent = 100; }
        if(wifiStrengthPercent < 0) { wifiStrengthPercent = 0; }

         // Not sure if this is correct
        wifiBars = wifiStrengthPercent / 20;
        if(wifiBars > 4) { wifiBars = 4; }
        if(wifiBars < 0) { wifiBars = 0; }
    }
 
ergebnis="wifi:"+wifiStrengthPercent+" wifispeed:"+linkspeed+" systemload:"+systemload+" memory:"+memory_frei+" powerPlugged:"+status+" powerLevel:"+rawlevel+" Level:"+level+" "+scale;

}

// url für browser setzen
// der browser muss als standart gesetzt werden
if (befehl.equalsIgnoreCase("newUrl"))  {
    service = (Service) server.props.get("serviceContext");
    pkgManager = service.getPackageManager();
    Intent newIntent = new Intent(Intent.ACTION_VIEW,Uri.parse(para));
    newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    service.startActivity(newIntent);
   ergebnis="ok";
}


// ToastMessage auf Bildschirm ausgeben lesen
if (befehl.equalsIgnoreCase("toast"))  {
  makeToast(para,"long");
  ergebnis="ok";
}

print ("fehler="+fehler+" ergebnis="+ergebnis+" para="+para+" befehl="+befehl);

</bsh>


dann das script mit HTTPMOD auslesen :


define androidTablet_Bad HTTPMOD http://192.168.25.21:8080/test.xhtml?text=none&befehl=batt 60
attr androidTablet_Bad userattr DbLogExclude event-on-change-reading readingsName10_powerLevel readingsName20_powerPlugged readingsName30_wifi readingsName40_wifispeed readingsName50_systemload readingsName60_memory readingsRegex10_powerLevel readingsRegex20_powerPlugged readingsRegex30_wifi readingsRegex40_wifispeed readingsRegex40_wifispeef readingsRegex50_systemload readingsRegex60_memory stateFormat verbose
attr androidTablet_Bad DbLogExclude (memory|systemload):600
attr androidTablet_Bad event-on-change-reading .*
attr androidTablet_Bad readingsName10_powerLevel powerLevel
attr androidTablet_Bad readingsName20_powerPlugged powerPlugged
attr androidTablet_Bad readingsName30_wifi wifi
attr androidTablet_Bad readingsName40_wifispeed wifispeed
attr androidTablet_Bad readingsName50_systemload systemload
attr androidTablet_Bad readingsName60_memory memory
attr androidTablet_Bad readingsRegex10_powerLevel powerLevel:([0-9:]+)
attr androidTablet_Bad readingsRegex20_powerPlugged powerPlugged:(.*?)\s
attr androidTablet_Bad readingsRegex30_wifi wifi:([0-9:]+)
attr androidTablet_Bad readingsRegex40_wifispeed wifispeed:(.*?)\s
attr androidTablet_Bad readingsRegex50_systemload systemload:([0-9:]+)
attr androidTablet_Bad readingsRegex60_memory memory:([0-9:]+)
attr androidTablet_Bad room Android
attr androidTablet_Bad stateFormat power_Level=powerLevel power_Plugged=powerPlugged Memory=memory M Systemload=systemload% Wifispeed=wifispeed Mbps wifirssi=wifi
attr androidTablet_Bad verbose 0


damit habe ich dann die möglichkeit den batteriestand auszulesen und auch eine sprachsugabe zu initiieren (wie beim wvc)

und hurra - es funktionier schon seit einigen Tagen.

Einziges Problem ist nur noch der speicherhunger des browser ....
den muss ich jeden tag einmal neu starten

vielleicht hilft es dem einen oder anderen - bis mal wvc erneuert wird ....
wünscheswert wäre es ...
2xFHEM auf Raspi3,MAXLAN,HMLAN,KeyMatic,MAX Heizung,2x HM-WDS10_TH-O,3xHM-SEC-SD,3xHM Wandtaster 2-Kanal, 2xWandtaster 6-Kanal,1xHM Bewegungsmelder,4xHM EinbauActor,4x Jalousien Actor,2xEGPM2LAN,2xHM DimAktor,2xFritzbox 6840/6490,4-20ma Levelsensor-Ina219,PIP5048,Raspi2 als Floorplan,4xJeeLink

Matscher

Zitat von: Turbokid am 23 März 2015, 20:51:21
Hallo Leute, bei mir geht die App mit dem Floorplan leider auch nicht mehr. Mit dem Rest jedoch schon.
Also habe ich mich mal auf die Suche gemacht und folgendes gefunden:

hier auszug aus dem Quelltext den bei Chrome anzeigt.
Im nicht floorplan:
<script attr='' type="text/javascript" src="/fhem/pgm2/cordova-2.3.0.js"></script><script type="text/javascript" src="/fhem/pgm2/webviewcontrol.js"></script><script type="text/javascript">var wvcDevices = {'12346': 'tabitab', '12345': 'WallTablet'}</script><script type="text/javascript" charset="UTF-8"></script>
<script attr='' type="text/javascript" src="/fhem/pgm2/dashboard.js"></script>


Im Floorplan:
<script attr='/fhem/pgm2/cordova-2.3.0.js"></script><script type="text/javascript" src="/fhem/pgm2/webviewcontrol.js"></script><script type="text/javascript">var wvcDevices = {'12346': 'tabitab', '12345': 'WallTablet'}</script><script type="text/javascript" charset="UTF-8' type="text/javascript" src=""></script>
<script attr='/fhem/pgm2/dashboard.js' type="text/javascript" src=""></script>

Wie das jetzt zustande kommt ka, aber vielleicht sieht einer Spezies wie der flasche Quellcode zusammengebaut wird im code?!

Zeile 484 im 95_FLOORPLAN.pm bringt das ganze rein:

$jsTemplate = '<script attr=\'%s\' type="text/javascript" src="%s"></script>'."\n";

attr=\'%s\' aus der Zeile entfernen und dann läuft es wieder normal so wie es sollte.
Rasp 3
CUL V3 868Mhz + nanoCUL 868Mhz als RFR + nanoCUL 868Mhz für Homematic + SIGNALduino
Zigbee CC2531 - Aquara TempSensor
MySensors Ethernet Gateway, Water meter, Gas meter
Modul: 09_CUL_FHTTK.pm (assumed), culfw part HAS_FHT_TF

2P4u

Hi zusammen.
Ich habe folgendes anliegen. Ich möchte beim verlassen der Wohnung eine Meldung haben, welche Fenstern noch offen sind.
Hierfür habe ich folgendes Noti gebastelt:
define noti_Wohnungstuer notify tk_Haustuer:open([fk_Bad] eq "open") (set InfoTab ttsSay Achtung! Fenster im Badezimmer ist noch offen);
IF ([fk_Buero] eq "open") (set InfoTab ttsSay Achtung! Fenster im Büro ist noch offen);
IF ([fk_Kueche] eq "open") (set InfoTab ttsSay Achtung! Fenster in der Küche ist noch offen);
IF ([fk_Schlafzimmer] eq "open") (set InfoTab ttsSay Achtung! Fenster im Schlafzimmer ist noch offen);
IF ([fk_Terasse] eq "open") (set InfoTab ttsSay Achtung! Terassentür ist noch offen);
IF ([CUL_FHTTK_d1cc54] eq "open") (set InfoTab ttsSay Achtung! Fenster im Wohnzimmer ist noch offen)


Leider habe ich das Problem, dass immer nur ein Text angesagt wird. Wahrscheinlich kann WVC nur ein ttsSay Befehl ausführen.
Hat jemand einen Lösungsansatz, wie ich es hinbekomme, dass alle offenen Fenster angesagt werden?

Wäre für eure Hilfe dankbar.
Lieben Gruss
Daniel
1x Ubuntu Server
1x LaCrosse Gateway für PCA301 /1x HMLAN /1x HMLGW
2x HueBridge mit Devices/ 1x Logitech Harmony Ultimate

rainer1962

hallo 2p4u
mach es doch mit variablen:

my $fenster1="Fenster Büro";
my $fenster2="Fenster Küche";
my $fenster3="Fenster Wonzimmer";
my $all="";
if (fenster_buero eq "open"){$all .= ' '. $fenster_1;}
..
..
..
fhem "set infoTab ttsDay Achtung! $all noch offen";

......
2xFHEM auf Raspi3,MAXLAN,HMLAN,KeyMatic,MAX Heizung,2x HM-WDS10_TH-O,3xHM-SEC-SD,3xHM Wandtaster 2-Kanal, 2xWandtaster 6-Kanal,1xHM Bewegungsmelder,4xHM EinbauActor,4x Jalousien Actor,2xEGPM2LAN,2xHM DimAktor,2xFritzbox 6840/6490,4-20ma Levelsensor-Ina219,PIP5048,Raspi2 als Floorplan,4xJeeLink

2P4u

Hi reiner,
Danke für den Tipp.
Ich habe noch nie mit Variablen gearbeitet.

Kannst du mir beim Zusammenbau des Codes helfen?
tk_Haustuer:open ([fk_Bad] eq "open") my $fenster1="Fenster Büro";
my $fenster2="Fenster Küche";
my $fenster3="Fenster Badezimmer";
my $fenster4="Fenster Schlafzimmer";
my $fenster5="Tür Terasse";
my $fenster6="Fenster Wohnzimmer";
my $all="";
if (fk_Buero eq "open"){$all .= ' '. $fenster_1;}
if (fk_Kueche eq "open"){$all .= ' '. $fenster_2;}
if (fk_Bad eq "open"){$all .= ' '. $fenster_3;}
if (fk_Schlafzimmer eq "open"){$all .= ' '. $fenster_4;}
if (fk_Terasse eq "open"){$all .= ' '. $fenster_5;}
if (CUL_FHTTK_d1cc54 eq "open"){$all .= ' '. $fenster_6;}
fhem "set infoTab ttsDay Achtung! $all noch offen";


Das hier ist wahrscheinlich Schwachsinn oder?
1x Ubuntu Server
1x LaCrosse Gateway für PCA301 /1x HMLAN /1x HMLGW
2x HueBridge mit Devices/ 1x Logitech Harmony Ultimate

rainer1962

fast richtig ,
du musst nur das ganze in {} setzen

.*:open {
my $fenster1="Fenster Büro";
my $fenster2="Fenster Küche";
my $fenster3="Fenster Badezimmer";
my $fenster4="Fenster Schlafzimmer";
my $fenster5="Tür Terasse";
my $fenster6="Fenster Wohnzimmer";
my $all="";
if (fk_Buero eq "open"){$all .= ' '. $fenster_1;}
if (fk_Kueche eq "open"){$all .= ' '. $fenster_2;}
if (fk_Bad eq "open"){$all .= ' '. $fenster_3;}
if (fk_Schlafzimmer eq "open"){$all .= ' '. $fenster_4;}
if (fk_Terasse eq "open"){$all .= ' '. $fenster_5;}
if (CUL_FHTTK_d1cc54 eq "open"){$all .= ' '. $fenster_6;}
fhem "set infoTab ttsDay Achtung! $all noch offen";
}

damit geht das notify los wenn eines deiner geräte den "open" status wirft...
du musst halt nur dann noch eine bedingung einbringen dass des nur zutrifft wenn du die wohnung verlässt.

2xFHEM auf Raspi3,MAXLAN,HMLAN,KeyMatic,MAX Heizung,2x HM-WDS10_TH-O,3xHM-SEC-SD,3xHM Wandtaster 2-Kanal, 2xWandtaster 6-Kanal,1xHM Bewegungsmelder,4xHM EinbauActor,4x Jalousien Actor,2xEGPM2LAN,2xHM DimAktor,2xFritzbox 6840/6490,4-20ma Levelsensor-Ina219,PIP5048,Raspi2 als Floorplan,4xJeeLink

cotecmania

Zitat von: Matscher am 25 März 2015, 08:32:21
Zeile 484 im 95_FLOORPLAN.pm bringt das ganze rein:

$jsTemplate = '<script attr=\'%s\' type="text/javascript" src="%s"></script>'."\n";

attr=\'%s\' aus der Zeile entfernen und dann läuft es wieder normal so wie es sollte.

Wird das im Floorplan dann offiziell gefixt ?

Gruss
Joe
FHEM auf RaspberryPI B (buster)
2xCUL868 für MAX/Slow_RF, HM-LAN, JeeLink
MAX!/HM-Thermostate, FS20/HM-Rolladenschalter, FS20-EM, LevelJet-Ölstandsmessung, PCA301, IT, KM271, IPCAM, FireTAB10 FTUI

Spartacus

Hallo,
wollte mich einmal in das Thema einarbeiten, habe aber gelesen, dass es aktuell Probleme mit dem Modul und der aktuellen Fhem-Version gibt. Ist das noch aktuell? Oder was muss man beachten?
djhans
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

bsl02

Hallo Spartacus,

schau mal eine Antwort über Deinem Post und noch weiter oben.
Die Zeilennummer im Modul war bei mir eine andere (wohl anderer Versionsstand), habe trotzdem getestet und sieht momentan gut aus.

Im Floorplan ist wieder das Mikrofon zu sehen, Durchsagen kommen bisher.
Wenn das die Fehlerbehebung war, käme mir ein offizieller Patch sehr entgegen.

Gruß, Stefan
RPi3 (FHEM) / CUL V3 868 (FS20) / nanoCUL868 (HM) / RFXtrx433 (IT & ELRO) / MAX!Cube (Thermostate, Fenster) / Bluetooth (presence Handy) / Sonoff mit Tasmota // Audio: RPi3 mit "max2play"-Image (Squeezeserver+Player) / Video: Synology-NAS mit TVheadend, Triax TSS400 Sat-IP Converter

cotecmania

Zitat von: Matscher am 25 März 2015, 08:32:21
Zeile 484 im 95_FLOORPLAN.pm bringt das ganze rein:

$jsTemplate = '<script attr=\'%s\' type="text/javascript" src="%s"></script>'."\n";

attr=\'%s\' aus der Zeile entfernen und dann läuft es wieder normal so wie es sollte.

Hab das jetzt auch mal getestet, funktioniert aber bei mir nicht !
Definitiv kein Batteriesymbol mehr und BlueScreens ...

Neverending story  :( ...
FHEM auf RaspberryPI B (buster)
2xCUL868 für MAX/Slow_RF, HM-LAN, JeeLink
MAX!/HM-Thermostate, FS20/HM-Rolladenschalter, FS20-EM, LevelJet-Ölstandsmessung, PCA301, IT, KM271, IPCAM, FireTAB10 FTUI