moziloCMS Supportforum

moziloCMS => Wie kann ich...? => Thema gestartet von: Dragonfly am 09. Juli 2015, 08:59:37

Titel: http-request via jQuery
Beitrag von: Dragonfly am 09. Juli 2015, 08:59:37
Hallo - ich bin von der Hausautomatisierer-Front.

Es gibt bereits viele Oberflächen um alles mögliche zu steuern, leider nicht mit Userberechtigung.
Jetzt muß Mozilo herhalten - also schnell mal auf einer Synology installiert (Rechte alles auf 777) und los gehts.

Um daheim etwas zu schalten, muß ich "nur" einen http-get absetzten; schon geht das Licht an, der PC aus, oder der Radio an.
Die einfachste Umsetzung war ein Link, die Antwort vom Server landet in einem I-Frame.
Geht, ist aber nicht ausbaufähig; stefanbe hat mich auf jQuery aufmerksam gemacht.

Daraufhin habe ich mir folgenden Code ergooglet:
<head>{JQUERY}
<script>
$(document).ready(function(){
     $("button").click(function(){
$.get("http://url1/ein",
function(data, status){
             alert("Data: " + data + "\nStatus: " + status);
         });
     });
});
</script>
  <title>

und zum Auslösen:
   <button>ein</button>

Das 1. Ziel ist nun:
Wie bekomme ich möglichst effizient mit einem Script und eigenem Syntax mehrere Schaltflächen für einen einfachen request?

[Button={DESCRIPTION}|{VALUE}]
[Button=ein|http://url1/ein]
[Button=aus|http://url1/aus]
[Button=Kamera Position 1|http://url2/pos1]
...

Es soll also ein Button erstellt werden, welcher benannt werden kann und eine hinterlegte Url im Script einfügt, welches sicher noch zu 50% abgespeckt werden kann  :mrgreen:

Mit dem Plugin "Webcambild" sollte ich auch meine IP-Kamera angezeigt bekommen - hier möchte ich dann einige Requests hinterlegen, welche die Cam dann steuern (Positionen anfahren)


das 2. Ziel - darum der ganze Zirkus:
sofern sich die Konfiguration mit einem eigenen Syntax gut machen läßt wäre, die Buttons so zu präsentieren, daß sie den Schaltstatus kennen - also grüner Button für ein, rot für aus, gelb für unbekannt.
Auch hier gibt es wieder einen Request der gesendet und ausgewertet werden soll.

Hatte noch nichts mit jQuery zu tun - bitte lieb sein  :-[

Vielen Dank für die Hilfe - Tom
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 09. Juli 2015, 13:23:13
Willkommen Dragonfly

so als erstes das wieder Löschen
<head>{JQUERY}
<script>
$(document).ready(function(){
     $("button").click(function(){
$.get("http://url1/ein",
function(data, status){
             alert("Data: " + data + "\nStatus: " + status);
         });
     });
});
</script>
  <title>

<button>ein</button>


den Anhang als Plugin instalieren
mit einem Editor die index.php vom Plugin aufmachen und meinen beiden Kommentaren folgen :-)
Plugin activieren.
nee Inhaltseite aufmachen und nur {CCURemotePC} reinschreiben und die Inhaltseite aufrufen.

ausprobieren.

lg stefanbe
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 09. Juli 2015, 22:01:49
Vielen Dank - leider nichts  :'(

status= error
error: not found


folgendes:
die .exe kann heißen wie sie will - da gibt es ein Programm welches CCU-RemotePC heißt;
vom aufbau des Scripts würde ich vorschlagen das "ding" mozilo2ccu(.exe) nennen, da es schon sehr speziell in diese richtung geht, und mit allgemeinen requests nichts mehr zu tun hat - ist halt schon Teil 2....

Button erscheint keiner;
im Quelltext ist auch die zusammengesetzte url nicht vorhanden - kann das also nicht prüfen.

$ccu_url = '192.168.125.70/mozilo2ccu.exe?'; - hier fehlt das fragezeichen im script, einfügen bringt keine Änderung

ich würde nicht encoden, wenn es sich vermeiden läßt  - wegen der lesbarkeit


im .js hast du ja auch (richtig) encodet;

im Source-Code taucht aber dann eine falsche auf:
<input type="hidden" name="ccu_state" value="state=dom.GetObject%28%22BidCos-RF.IEQ0023638%3A1.STATE%22%29" />
0 oder 1 kann ja jetzt nicht eingefügt sein, weil ja kein status da ist.

von dem "block" gibt es mehrere Varianten:
('CCU-RemotePC').State(1)
('BidCos-RF.FEQ1234567:2.STATE').State(1)
('CUxD.CUX020019:1.STATE').State(0)
('BidCos-WIR.FEQ1234567:2.STATE').State(1) - die muß ich noch testen, hatte ich übersehen

hier auf meiner seite findest du vielleicht noch einige antworten: http://dragonfly.at/CCU-RemotePC/Senden-Beispiele.html (http://dragonfly.at/CCU-RemotePC/Senden-Beispiele.html)

Kann man denn den "simplen-Request" ohne Plugin lösen?

Danke, Tom
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 09. Juli 2015, 22:19:16
Moment hier ist´s doch anders als gedacht:
value="state=dom.GetObject%28%22BidCos-RF.IEQ0023638%3A1.STATE%22%29"
            state=dom.GetObject%28%27BidCos-RF.IEQ0023638:1.STATE%27%29.State%280%29 - das ist eine was geht.

da wurde nur der val-Teil vom js nicht hinzugefügt - die %22 haben mich verwirrt - ich nehme immer %27, weil wir schon Probleme hatten, wenn in einem script mehrere " vorhanden sind, und dieses dann nicht mehr weiß, wo was anfängt bzw. aufhört.

Edit:
der Button ist doch da - man sieht in Crome aber fast nicht, weil kein Wert drinnen steht - im FF erkennt man ihn.

hätte das noch abgeändert - bringt aber auch nix:
$button_state = 'dom.GetObject(%27BidCos-RF.IEQ0023638:1.STATE%27)';
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 09. Juli 2015, 22:40:51
du hast da die portnr. vergessen und das fragezeichen brauchst du nicht
Zitat$ccu_url = '192.168.125.70/mozilo2ccu.exe?'

hab dir nochmal nen anhang gemacht siehe oben

schreib mir mal genau was da so geht oder nicht

lg stefanbe
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 09. Juli 2015, 22:55:14
hab das enkoden mal raus genommen
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 09. Juli 2015, 23:34:46
das hab ich auskommentiert:
#$ccu_url = $this->PLUGIN_SELF_URL.'test.php';

so konfiguriert:

$ccu_url = '192.168.125.70:8181/CCU-RemotePC.exe';
$button_state = "dom.GetObject('BidCos-RF.IEQ0023638:1.STATE')";


Button: blau "unbekannt"

setzte ich die url aus dem source-code zusammen, fehlen einige teile:
192.168.125.70:8181/CCU-RemotePC.exe?state=dom.GetObject('BidCos-RF.IEQ0023638:1.STATE').Value()

getestet:
<xml>
<exec>/CCU-RemotePC.exe</exec>
<sessionId/>
<httpUserAgent>
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36
</httpUserAgent>
<state>true</state>
</xml>
true - also ein



so sieht der SC aus:


<script type="text/javascript">/*<![CDATA[*/var ccu_base = "192.168.125.70:8181/CCU-RemotePC.exe";/*]]>*/</script>
<script type="text/javascript" src="/plugins/CCURemotePC/control.js"></script>

und
<br />
<div class="ccu-button"><input type="hidden" name="ccu_state" value="dom.GetObject('BidCos-RF.IEQ0023638:1.STATE')" /><button value="" disabled></button></div>
   </article>
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 09. Juli 2015, 23:44:00
Vielleicht wäre es einfacher, die url anders zusammenzusetzen - wegen anderer geräte:

192.168.125.70:8181/CCU-RemotePC.exe?state=dom.GetObject('BidCos-RF.IEQ0023638:1.STATE').Value()

Die url und das in der Klammer wäre zu konfigurieren....

BidCos-RF ist ein funk-teil
CUXD ein virtulelles....

IEQ... ist die seriennummer mit kanal
STATE sagt aus, ob 0 oder 1 zurückkommt (LEVEL gäbe hier eine zahl für einen %-Wert eines dimmers aus)
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 09. Juli 2015, 23:50:08
immer langsam erstmal muss das gehen

das .Value() und state= wird in der control.js gemacht

probier die neue mal aus

du must nur die index.php und control.js tauschen

Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 10. Juli 2015, 00:08:00
Leider wieder unbekannt.

<script type="text/javascript">/*<![CDATA[*/var ccu_base = "192.168.125.70:8181/CCU-RemotePC.exe";/*]]>*/</script>
<script type="text/javascript" src="/plugins/CCURemotePC/control.js"></script>

<br />
<div class="ccu-button"><input type="hidden" name="ccu_state" value="dom.GetObject('BidCos-RF.IEQ0023638:1.STATE')" /><button value="" disabled>Unbekant</button></div>
   </article>


Die CCU-Firewall blockiert aufrufe von unbekannten Ip-Adressen - ein "normaler" link auf einer HP kommt mit der IP des PC´s rein - habe die Firewall jetzt umgestellt, daß auch die IP der Synology akzeptiert werden würde - falls das hier anders läuft.

muß für heute leider schluß machen  >:(
sonst schimpft die frau....
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 10. Juli 2015, 12:42:58
so hab dir was neues gemacht

folge in der "control.js" den kommentaren

im chrome browser kanst du mit der rechten maustaste "element untersuchen" dann "console" da siehst du meldungen aus der "control.js"

hast du die möglichkeit zu schauen was beim server ankommt?

lg stefanbe

Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 10. Juli 2015, 15:19:02
Danke für die doch recht intensiven Bemühungen:

Original, noch nichts verändert:
XMLHttpRequest cannot load %3192.168.125.70:8181/CCU-RemotePC.exe?state=dom.GetObject('BidCos-RF.IEQ0023638:1.STATE').Value(). Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.

darunter - nicht in rot:
f.support.ajax.f.ajaxTransport.send @ jquery-1.7.2.min.js:4f.extend.ajax @ jquery-1.7.2.min.js:4get_ccu_state @ control.js:2(anonymous function) @ control.js:75f.event.dispatch @ jquery-1.7.2.min.js:3f.event.add.h.handle.i @ jquery-1.7.2.min.js:3f.event.trigger @ jquery-1.7.2.min.js:3(anonymous function) @ jquery-1.7.2.min.js:3e.extend.each @ jquery-1.7.2.min.js:2e.fn.e.each @ jquery-1.7.2.min.js:2f.fn.extend.trigger @ jquery-1.7.2.min.js:3(anonymous function) @ control.js:78f.Callbacks.o @ jquery-1.7.2.min.js:2f.Callbacks.p.fireWith @ jquery-1.7.2.min.js:2e.extend.ready @ jquery-1.7.2.min.js:2c.addEventListener.B @ jquery-1.7.2.min.js:2
control.js:34 error
control.js:35 error
control.js:36 DOMException: Failed to execute 'send' on 'XMLHttpRequest': Failed to load '%3192.168.125.70:8181/CCU-RemotePC.exe?state=dom.GetObject('BidCos-RF.IEQ0023638:1.STATE').Value()'.
    at Error (native)
    at Object.f.support.ajax.f.ajaxTransport.send


Hab die anderen Varianten probiert - kommt auf die schnelle gesehen das gleiche raus - geht ja jetzt ums xml-protokoll, das damit nicht zurecht kommt, und das wird ja nicht geändert - sehe ich das richtig?!
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 10. Juli 2015, 17:11:39
ok

änder mal in der control.js das
url: "http://" + ccu_base + "?" + para,

Zitatgeht ja jetzt ums xml-protokoll, das damit nicht zurecht kommt, und das wird ja nicht geändert - sehe ich das richtig?!
nee es geht daeum das überhaupt was beim server ankommt

bin jetzt mal weg bis morgen

lg stefanbe
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 10. Juli 2015, 18:34:13
Etwas hat sich getan:
XMLHttpRequest cannot load http://192.168.125.70:8181/CCU-RemotePC.exe?state=dom.GetObject(%27BidCos-RF.IEQ0023638:1.STATE%27).Value(). No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.125.60' is therefore not allowed access.

Kleiner Nachtrag:
die schließende Klammer nach Value - also das letzte Zeichen der Url wird in der Console nicht zum link dazugezählt - beim anklicken fehlt also die letzte ) . Fügt man diese hinzu funktioniert der link.
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 13. Juli 2015, 10:30:24
das sieht ja schonn mal gut aus
jetzt kanste das url coden einschalten
//return str;
//return str.replace(/'/g, '%27');
//return str.replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29');
return str.replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/:/g, '%3A');

und ausprobieren

wenn dann noch nee fehlermeldung kommt
dann setzt mal das dazu
crossDomain: true,
        dataType: "xml",


lg stefanbe
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 13. Juli 2015, 13:29:00
beforeSend
control.js:20 192.168.125.70:8181/CCU-RemotePC.exe
control.js:21 state=dom.GetObject%28%27BidCos-RF.IEQ0023638%3A1.STATE%27%29.Value%28%29
Kategorie.html?draft=true:1

XMLHttpRequest cannot load http://192.168.125.70:8181/CCU-RemotePC.exe?state=dom.GetObject%28%27BidCos-RF.IEQ0023638%3A1.STATE%27%29.Value%28%29. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.125.60' is therefore not allowed access.


leider noch nichts, aber ich hab jetzt eine url, die ich direkt verwenden kann.

function get_ccu_state(para,that) {
    $.ajax({
// wenn du hier kommentar davor ?achst
url: "http://" + ccu_base + "?" + para,
// must du diese beiden entfernen
//url: ccu_base,
//data: para,
        method: "GET",
crossDomain: true,

// 2.
// dann hier den kommentar entfernen und wieder mit 1 beginnen
//processData:false,
// 3.
// dann hier den kommentar entfernen und wieder mit 1 beginnen
//traditional:true,
        dataType: "xml",
        beforeSend:function() {
    console.log("beforeSend");
    console.log(ccu_base);
    console.log(para);
        },
        success:function(xml) {
    console.log("success");
    console.log(xml);
            var state = $(xml).find("state").text();
            if(state == "true") {
                that.find("button").css("background-color","#00FF00").text("Ein").val(".State(0)");
            } else if(state == "false") {
                that.find("button").css("background-color","#FF0000").text("Aus").val(".State(1)");
            } else {
                that.find("button").css("background-color","#0000FF").text("Unbekant").val("").prop("disabled",true);
            }
        },
        error:function(jqXHR, textStatus, errorThrown) {
    console.log("error");
    console.log(textStatus);
    console.log(errorThrown);
            that.find("button").css("background-color","#0000FF").text("Unbekant").val("").prop("disabled",true);
        }
    });
}

function ccu_rawurlencode_js(str) {
// 1.
// zuerst hier nach und nach auskommentieren
//return str;
//return str.replace(/'/g, '%27');
//return str.replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29');
return str.replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/:/g, '%3A');
// nur bei diesen nicht
    return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/\~/g, '%7E').replace(/#/g,'%23');
}
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 13. Juli 2015, 21:00:48
mach mal die template.html auf und fügr im head bereich ganz oben das ein
<meta http-equiv="Access-Control-Allow-Origin" content="*">

lg stefanbe
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 14. Juli 2015, 12:29:32
Ist drinnen, leider keine Änderung  :'(
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 15. Juli 2015, 11:02:37
ok habs gefunden

du must auf dem server wo die CCU-RemotePC.exe das Access-Control-Allow-Origin setzen

entweder in ner .htaccess oder mit dem webserver der da läuft oder ...

lg stefanbe
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 15. Juli 2015, 12:01:54
also die .exe existiert ja nicht wirklich, die ist nur bestandteil der url und kann heißen wie sie will.

du meinst also die .htaccess die auf der Synology läuft, wo Mozilo installiert ist ändern?
also so:
# mozilo generated not change from here to mozilo_end
Options -Indexes
RewriteEngine On
RewriteRule ^(.*)/mod_rewrite_t_e_s_t\.html$ $1/index\.php?moderewrite=ok [L]
RewriteRule \.html$ index\.php [QSA,L]
# mozilo_end
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"


... was keine Änderung brachte...
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 15. Juli 2015, 12:48:59
Ich versteh gerade nicht, wo der Hänger ist...

bisher hatte ich das so laufen:
mit wget oder curl die seite runterladen, auswerten - befehl setzten, befehl senden.

Kann man nicht einen einfachen request draus bauen, der nur eine url aufruft - also wie in dem allerersten beispiel von mir.
dort konnte ich ja bereits was schalten.
dann wäre zumindest mal sichergestellt, daß die kommunikation über das script geht - danach erst das runterladen des status behandeln?
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 15. Juli 2015, 19:02:48
Ok, wenn ich jetzt eine url direkt im browser aufrufe bekomme ich den status in einem neuen tab.
wenn ich nun auf "Ziel speichern unter" gehe, lädt er mir die .exe runter, keine xml - vielleicht ist ja da der wurm drinnen?!

ich häng mal die exe dran.
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 15. Juli 2015, 19:08:03
das problem liegt daran das die browser es nicht mögen wenn mann in einem iframe nee ander domain aufruft "Access-Control-Allow-Origin".

du müstes es schaffen das der server 192.168.125.70:8181 einen header "Access-Control-Allow-Origin "*"" mit schickt.

ich bin da grad noch an einer anderen idee dran.

lg stefanbe
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 15. Juli 2015, 19:12:23
der server lauscht auf dem port "8181" wenn du jetzt die domain 192.168.125.70 mit dem port aufrufts weis der server was zu tun ist deshalb das mit der "CCU-RemotePC.exe" die nicht so heisen muss es geht da nur drum parameter mit zu geben.

lg stefanbe
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 17. Juli 2015, 11:34:48
so hab das geändert kanste es mal ausprobieren?

siehe oben der anhang

lg stefanbe
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 17. Juli 2015, 20:46:17
so;

kein fehler da - geht zwar nicht aber:
die console gibt aus:
success - control.js:14
null - control.js:15

wenn jetzt null der "state" ist, was ich annehme, wäre es nur noch eine "fehlkonfiguration"...
die ccu kennt also irgendwas nicht.

den teil hast du ja drinnen gelassen - der geht auch, wenn ich die url händisch zusammenbastle:
dom.GetObject('BidCos-RF.IEQ0023638:1.STATE')

leider sehe ich nirgends mehr die zusammengebaute url, um den fehler eingrenzen zu können.
null kommt im regelfall, wenn das in der klammer in der ccu nicht vorhanden ist.
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 17. Juli 2015, 21:19:40
ich hab jetzt noch ein wenig rumprobiert - bekomme beim direkten url-aufruf nur eine "null" zusammen wenn in der klammer was nicht passt:
dom.GetObject('CCU-RemotePC')
das sollte auch ein "true" ergeben - kommt aber leider "null" zurück

oder wenn "state=" nicht da ist:
so geht aber auch nichts:
$button_state = "state=dom.GetObject('CCU-RemotePC')";
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 17. Juli 2015, 21:33:36
andererseits, wenn ich hier
else if(state == "null") {
                that.find("button").css("background-color","#FF0000").text("Aus").val(".State(1)");


eingebe, sollte der button ja auf aus sein - bleibt aber auf unbekannt  :'(
Titel: Re: http-request via jQuery
Beitrag von: wasp am 18. Juli 2015, 21:38:42
--- sorry für die einmischung : Aber rein technisch geht das am OS / browser (...) und ggf. lokalem kram wie antivirus oder sw/hw - fws anderen blockern vorbei ?!  ::) :-X Aber sicher ist das ja bedacht...  8)
Irre tiefgehend...  :)
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 18. Juli 2015, 22:21:04
Nunja, es läuft ja von dem PC aus, wo ich teste ein Programm das das gleiche macht und funktioniert.
Sicherheitshalber wurde auch die IP von der Syno freigegeben - obwohl das wahrscheinlich nicht sein muß.

Wenn du dir CCU-RemotePC von mir runterlädst (www.dragonfly.at (http://www.dragonfly.at)) kannst du z.B. den Monitor ausschalten.
Wenn nun ein Befehl wie z.B.: http://localhost/screen_off (http://localhost/screen_off) dies machen soll, kann der auch auf einer Webseite auf der anderen Seite der Welt sein, denn "localhost" ist ja der Rechner, mit dem ich den Befehl aufrufe, nicht wo die Webseite gehostet wird  - also reagiert das Programm auch nur dort - zumindest funktioniert das mit normalen Links so.

Also sollte auch hier der Sender des Befehls der PC sein, der das Script aufruft, nicht die Syno. Ausgehend davon sollten alle Wege frei sein...
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 19. Juli 2015, 11:09:42
So, ich hab jetzt nochmal mit dem allerersten Versuch von mir experimentiert - jetzt wird mir einiges klar; auch hier war der Fehler "Access-Control-Allow-Origin" schon da, nur nicht relevant, da ja die zurückkommenden Daten nicht ausgewertet werden müssen.  :P
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 19. Juli 2015, 11:39:53
Momentan versuche ich noch immer einen einfachen Request sauber abzusetzten:
[html|<style type="text/css">
input.simple_request
{
   color: black;
   font-size:11px;
   font-family:Verdana,sans-serif;
   font-weight:bold;
   height:20px;
   background-color:#DEDEDE;
   border-style:solid;
   border-color:#000000;
   cursor: pointer;
}
input.simple_request:hover {
    border-color:#B3B3B3;
}
</style>
]

[html|<iframe
name="answer" frameborder="no" height="0" width="0">Ihr Browser kann leider keine eingebetteten Frames anzeigen.</iframe>]

[html|<form action="http://localhost:8885/zeit@Buero-Baumi" method="get" target="answer">
    <input type="submit" value=" Zeitansage " class="simple_request"/>
</form>]


funktionieren tut alles, weiß nicht ob man hier ein plugin brauchen würde - leider kommen fehler an:
Uncaught TypeError: Cannot set property 'cssText' of null(anonymous function) @ jquery-1.11.1.min.js:17(anonymous function) @ jquery-1.11.1.min.js:17t @ jquery-1.11.1.min.js:15(anonymous function) @ jquery-1.11.1.min.js:15
jquery-ui-1.10.2.custom.min.js:11 Uncaught ReferenceError: cIPJQ is not defined(anonymous function) @ jquery-ui-1.10.2.custom.min.js:11
chromeipass.js:1130 Uncaught ReferenceError: cIPJQ is not defined(anonymous function) @ chromeipass.js:1130
content.js:5 Uncaught TypeError: Cannot read property 'style' of null


den button hätte ich dann in ein syntax-element eingebaut; den iframe ins Template:
request = <form action="{VALUE}" method="get" target="answer"><input type="submit" value="{DESCRIPTION}" class="simple_request"/></form>

Kann mir hier bitte einer weiterhelfen? Brauche ein Erfolgserlebnis  :mrgreen:
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 19. Juli 2015, 20:45:25
Leider auch ein Reinfall - die ich kann zwar einiges damit ansteuern, aber nicht meine Kamera.
Mit einem einfachen link gehts, aber leider nicht mit der oben beschriebenen Methode.  :'(
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 21. Juli 2015, 12:44:55
probier die index.php im anhang mal aus (einfach die im plugin ersetzen)

überprüf in der index.php die $ccu_url variable.

und poste mir mal was da rauskommt.

lg stefanbe
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 21. Juli 2015, 13:00:38
das richtige:
<xml><exec>/CCU-RemotePC.exe</exec><sessionId></sessionId><httpUserAgent></httpUserAgent><state>true</state></xml>


über ein formular kann ich jetzt die kamera steuern - die parameter müssen leider einzeln übergeben werden.
wens interssiert:
cam_eingang_pos = [html|<form action="http://192.168.125.75:80/cgi-bin/hi3510/preset.cgi?" method="GET" target="answer">
<input type="hidden" name="-act" value="goto" />
<input type="hidden" name="-status" value="1" />
<input type="hidden" name="-number" value="{VALUE}" />
<input type="hidden" name="-usr" value="user" />
<input type="hidden" name="-pwd" value="password" />
<input type="submit" value="  {DESCRIPTION}  " class="simple_request"/>
</form>]

dabei handelt es sich um eine Instar - um gespeicherte positionen anzufahren.
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 21. Juli 2015, 13:02:40
gut dann kann es ja weiter gehen :-)

ich bau jetzt erst mal eine an aus button.

lg stefanbe
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 21. Juli 2015, 16:42:03
so

entpack mal den anhang und tausche alle dateien mit denen aus dem plugin

prüf in der index.php die ipadresse von $ccu_url

dann solte es einen button geben der an grün ist und rot aus

lg stefanbe
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 21. Juli 2015, 16:56:39
es kann schalten, refresht sich von "ein" nach "aus" - umgekehrt nicht, zeigt den status an, zwischen durch kommt mal kurz "unbekannt" - bis der status da ist...
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 21. Juli 2015, 17:05:22
na super :-)

was meinst du mit umgekehrt?
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 21. Juli 2015, 17:17:18
post mir mal die camera steurungs befehle
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 21. Juli 2015, 17:49:50
wenn ich von ein nach aus schalte, zeigt er aus an - der knopf.
wenn ich von aus nach ein schalte, bleibt er auf aus - außer ich rufe die seite erneut auf.
kann es sein, daß die antwort vom schalten ausgewertet wird? die ist nämlich bei ein und aus gleich.

die kamera hat aber nichts mit der haussteuerung zu tun:
http://192.168.125.75:80/cgi-bin/hi3510/mjpegstream.cgi?-chn=11&-usr=user&-pwd=password
hier wird oft nach dem fragezeichen abgeschnitten - darum die zusatzparameter.

ähnlich ist es auch bei einer steuerung von anderen geräten (squeezebox - requests sind auf meiner seite)
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 23. Juli 2015, 13:15:22
hm poste mal was beim schalten in der browser console unter "success" steht
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 23. Juli 2015, 14:09:14
#document
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 24. Juli 2015, 10:49:09
das #document kann man aufklappen, was dann da steht ist intresant :-)

die dazu gehörende schalt action auch

lg stefanbe
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 24. Juli 2015, 11:07:55
seite betreten, ein, aus
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 24. Juli 2015, 11:29:10
den anhang entpacken und mit der im plugin tauschen

poste mir dann noch mal die ergebnisse

lg stefanbe
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 24. Juli 2015, 11:34:19
Bitteschön
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 24. Juli 2015, 11:45:05
die CCU-RemotePC.exe lifert ja nur false zurück :grübel:

hast du nee erklärung darfür?

lg
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 24. Juli 2015, 12:08:05
ja - das ist einfach so  :mrgreen:

man müßte schalten, gleich danach den status wieder mit Value() holen;
"false" nach dem schalten bestätigt eigentlich nur, daß der befehl ausgeführt wurde, leider nicht in welche Richtung er ging  :'(
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 24. Juli 2015, 13:24:15
ok anhang entpacken .....

und console posten :-)

lg
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 24. Juli 2015, 14:08:53
60 = seite aufrufen (licht + button aus)

61 = licht einschalten (licht = ein // button = aus)

aktuallisieren auf richtigen status
62= licht ausschalten (licht = aus // button = ein)

wenn bei letzterem die reihenfolge stimmt, würde der value-befehl schneller zurückkommen als der schaltbefehl.
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 24. Juli 2015, 14:19:14
noch mal anhang

und ...

lg
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 24. Juli 2015, 14:33:41
perfekt
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 24. Juli 2015, 14:43:59
:-)

du hast auf der webseite stehen
('BidCos-RF.BidCoS-RF:1.PRESS_SHORT').State(true)
muss das "true" sein oder kann das auch eine "1" sein?
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 24. Juli 2015, 14:58:09
das ist die gruppe von den sendern - das geht leider nur so.
in echt drückst du dort einfach einen knopf, der wiederrum schaltet ein oder mehrere geräte.

('BidCos-RF.KEQ1234567:1.LEVEL').State(0.5) - die gruppe ist für rollos und dimmer - 0 ist aus, 1 ist ein, das dazwischen sind die % der helligkeit, bzw höhe des rollos -> 0.5 = 50% -> darf aber kein , sein....
sowas hab ich in ccu-remotepc mit einem schiebregler gemacht.

dann gibt es noch thermostate usw., die man auslesen kann da ändert sich das in der klammer wieder - (*).Value - der wert, der zurückkommt wird dann nur als text angezeigt - und formatiert (kommastellen - also *100 für dimmer und rollos; bei temperautur wird auf 2 kommastellen gerundet - siehe unten)

<xml><exec>/CCU-RemotePC.exe</exec><sessionId/><httpUserAgent>User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0</httpUserAgent><state>26.809000</state></xml>
-> 26.81 °C


zusätzlich hab ich in ccuremotepc noch eingebaut, daß sämtliche schalter nur Visualisert werden können, und nicht geschalten.
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 24. Juli 2015, 15:14:25
ach ja...
dann gibts noch spezialbefehle, die funktionieren wie das ein/ausschalten:
('BidCos-RF.JEQ0063206:3.INHIBIT')
mit sowas kann man geräte z.B. sperren

also möglichkeiten ohne ende....
darum fände ich auch einen "normalen" request für so ein plugin nicht optimal - eben weil alles sehr speziell für HomeMatic abgestimmt ist.


Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 25. Juli 2015, 04:12:37
noch ein nachtrag zu den sendern - die beschriebenen sind eigentlich Taster - es gibt also keinen status ein/aus.
die kann man nur kurz oder lang drücken, dann wird halt was geschalten....
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 27. Juli 2015, 11:50:48
Zitatalso möglichkeiten ohne ende....
darum fände ich auch einen "normalen" request für so ein plugin nicht optimal - eben weil alles sehr speziell für HomeMatic abgestimmt ist.
du kanst dem plugin ja parameter mit geben

zum erzeugen eines an/aus button
{CCURemotePC|switch, BidCos-RF.IEQ0023638:1.STATE}
oder eines sliders
{CCURemotePC|slider, BidCos-RF.KEQ1234567:1.LEVEL}
so könte man die ganze bantbreite abdecken, oder liege ich da falsch?

lg stefanbe
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 27. Juli 2015, 12:42:10
Da hast du recht; ist dann ja auch noch schön erweiterbar, um nur stati zu holen:
{CCURemotePC|temperature, BidCos-RF.KEQ1234567:1.TEMPERATURE}
{CCURemotePC|level, CUxD.CUX1234567:1.LEVEL}


so könnte man diverse stati als text holen und gezielt vorformatieren...
Titel: Re: http-request via jQuery
Beitrag von: stefanbe am 30. Juli 2015, 11:46:27
gut dann müssen wir ja nur noch festlegen welche es gibt und was die erzeugen müssen

Beispiel:
{CCURemotePC|switch, BidCos-RF.IEQ0023638:1.STATE} erzeugt einen An/Aus Button
{CCURemotePC|slider, BidCos-RF.KEQ1234567:1.LEVEL} erzeugt einen Slider

kanst du sone liste machen?

lg stefanbe
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 30. Juli 2015, 18:13:30
Nun denn:

{CCURemotePC|switch, BidCos-RF.IEQ0023638:1.STATE} erzeugt einen An/Aus Button:
('CCU-RemotePC').State(1)
('BidCos-RF.FEQ1234567:2.STATE').State(1)
('BidCos-Wired.KEQ1234567:4.STATE').State(1)
('CUxD.CUX020019:1.STATE').State(0)
('BidCos-RF.JEQ0063206:3.INHIBIT').State(1)




{CCURemotePC|slider, BidCos-RF.KEQ1234567:1.LEVEL} erzeugt einen Slider (Rollo, Dimmer):

('BidCos-RF.KEQ1234567:1.LEVEL').State(0.5)
('BidCos-Wired.KEQ1234567:1.LEVEL').State(0.3)

Komma wird mit einem Punkt dargestellt - mit 0.4 wird 40% angefahren.



fortsetzung folgt - meine oberste instanz hat gerufen
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 30. Juli 2015, 18:50:37
Sch... zeit abgelaufen, mitten unterm editieren  :P
nochmal alles, da ergänzt:

Nun denn:

{CCURemotePC|switch, BidCos-RF.IEQ0023638:1.STATE} erzeugt einen An/Aus Button:
('CCU-RemotePC').State(1)
('BidCos-RF.FEQ1234567:2.STATE').State(1)
('BidCos-Wired.KEQ1234567:4.STATE').State(1)
('CUxD.CUX020019:1.STATE').State(0)
('BidCos-RF.JEQ0063206:3.INHIBIT').State(1)

namensgebung von vorteil (an=ein, aus=aus; an=nicht gesperrt, aus=gesperrt)



{CCURemotePC|slider, BidCos-RF.KEQ1234567:1.LEVEL} erzeugt einen Slider (Rollo, Dimmer):

('BidCos-RF.KEQ1234567:1.LEVEL').State(0.5)
('BidCos-Wired.KEQ1234567:1.LEVEL').State(0.3)

Komma wird mit einem Punkt dargestellt - mit 0.4 wird 40% angefahren.
hier sollte man bei "sliden" sehen, auf wieviel prozent man ist



{CCURemotePC|button, BidCos-RF.KEQ1234567:1.LEVEL} erzeugt einen Button ohne status:
('BidCos-RF.BidCoS-RF:1.PRESS_SHORT').State(true)
('BidCos-Wired.BidCoS-Wir:38.PRESS_LONG').State(true)
('CUxD.CUX2801001:12.PRESS_SHORT').State(true)
('BidCos-RF.KEQ1234567:2.PRESS_LONG').State(true)
inkl. oben angeführte Befehle

mit dem Button kann man mit obigen befehlen z.B. ein Rollo gezielt ansteuern -> also auf 20% bringen...
keine Statusabfrage
hier müßte man den namen des buttons mitgeben (ein, aus, 50%, sperren, entsperren,....)



3 Statusabfragen die als Text ausgegeben werden sollten:

temperatur und andere messwerte:
{CCURemotePC|level, CUxD.CUX1234567:1.TEMPERATURE}
('CUxD.CUX9050001:1.TEMPERATURE').Value()
('CUxD.CUX9000001:1.VOLTAGE').Value()
('BidCos-RF.KEQ1234567:1.TEMPERATURE').Value()

diese sollten auf 2 kommastellen gerundet werden
komma ist wieder ein "."


rollo/dimmer
{CCURemotePC|level%, CUxD.CUX1234567:1.LEVEL}
('CUxD.CUX1234567:1').Value()
('BidCos-RF.KEQ1234567:1.LEVEL').Value()
('BidCos-Wired.KEQ1234567:1.LEVEL').Value()

hier muß mit 100 multipliziert werden, um die % zu erhalten




Mehr fällt mir momentan nicht ein - gibt es aber sicher noch....
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 31. Juli 2015, 14:12:59
Jetzt geb ich dir doch noch was zu denken - anstelle des buttons kann man auch eine grafik verwenden:
{CCURemotePC|switch-image, lampe, BidCos-RF.IEQ0023638:1.STATE}

Das wäre so zu verstehen, daß man in einen ordner (im plugin?) einen ordner "lampe" erstellt, mit den bildern 0.png, 1.png, undef.png, loading.png, errror.png
also sind in dem ordner die bilder drinnen, die man sonst mit einem button erzeugt -> gibt man einen anderen ordner an (steckdose) wird dieser verwendet, er beinhaltet wieder bilder mit gleichen namen, aber unterschiedlichen grafiken.
so ist es recht einfach möglich, ein/aus-Stati individuelle bilder zuzuordnen, da man ja letztendlich eh nur die 0.png und 1.png tauschen muß.
Titel: Re: http-request via jQuery
Beitrag von: Thorstn am 01. August 2015, 01:19:41
Meine Fresse....

Soooooo viel Aufwand in einem CMS (!) Forum dafür, dass man demnächst seine Arme und Füße in Rente schicken kann.

Und für das Kackengehen gibt´s dann auch ne App, Arsch-Abwischen inklusive.

Sorry, musste ich mal loswerden!

:geek:
Titel: Re: http-request via jQuery
Beitrag von: Dragonfly am 01. August 2015, 06:46:06
Das ist jetzt so relativ...

Als die Fernbedienung erfunden wurde, meinte meine Mutter, sowas braucht man nicht - man wird ja wohl aufstehen können und einen Knopf drücken....

Als das Handy kam brauchte das keiner - jetzt haben es alle...


Das Interesse an Hausautomation ist größer als man denkt und es gibt schon zahlreiche Lösungsmöglichkeiten der Steuerung und Visualisierung;
Jede hat allerdings Vor- und Nachteile - Mozilo bietet hier den riesen Vorteil, daß es einfach zu warten ist, eine Benutzerverwaltung bietet, mit den responsive Layouts auf allen Geräten bedienbar ist und durch die Plugins irrsinnig viele Möglichkeiten bietet.
Momentan bin ich gerade dabei, diverse Trends optisch an Mozilo anzupassen und zu integrieren (Temperatur, Stromverbrauch,....) - durch den eigenen Syntax super einfach!

Ich bin schon gespannt, wie groß der Zulauf ist, wenn das Projekt abgeschlossen ist und ich es im anderen Forum präsentiert habe.

LG Tom
Titel: Re: http-request via jQuery
Beitrag von: Thorstn am 10. August 2015, 01:33:26
Hallo Tom,

ich würde gerne mehr zu meiner Meinung schreiben, aber das würde 1. sehr Off-Topic und 2. wohl im "falschen" Forum geschrieben werden  ;)

Nur kurz: der heutige technische Fortschritt geht immer schneller vonstatten. In meinen Augen: zuuuu schnell. Und der Mensch wird immer mehr abgelenkt (da sind auch TV, Radio usw. nicht unschuldig dran) und wird mehr und mehr erschlagen von den Eindrücken.
Nicht nur, dass es immer mehr Technik und Werbung gibt, die es - Geiz ist geil sei Dank - für fast Jedermann erschwinglich zu kaufen gibt, man muss auch immer "Up To Date" und erreichbar sein. Wenn die Freunde bei Facebook sind, muss man auch dabei sein. Sonst hat man ja keine Freunde mehr. Zumindest sehe ich "draußen" keine spielenden Kinder und Jugendlichen mehr. Und wenn man heutzutage erzählen will, dass man auf einem Konzert der Musik-Band "XY" oder auf einer Party war, glauben einem die Freunde nicht, wenn man kein Selfie vorweisen kann.

Der Mensch wird immer abhängiger von Technik! Und irgendwann wird die Evolution den Menschen wegradieren...

Nur ein kurzer Anriss, wie ich die Menschen heute sehe  ;)

Und - um zum Thema moziloCMS zu kommen - ich wäre nie auf die Idee gekommen, Hausautomation mit moziloCMS verwirklichen zu wollen. Also im Sinne der technischen Realisation, nicht von der Moral her.

Ich dachte nur, dass Du moziloCMS vielleicht etwas überstrapazierst  ;)

Nichts für Ungut.

Liebe Grüße,
Thorsten