Ich glaub ich stehe grad ein wenig auf'm schlauch.
wenn ich den Shelly anschließen für den Torantrieb, dann:
N - klemme 10
L - klemme 11
SW - 11
I - 7
0 - 2
hab ich das so richtig verstanden?
Ich glaub ich stehe grad ein wenig auf'm schlauch.
wenn ich den Shelly anschließen für den Torantrieb, dann:
N - klemme 10
L - klemme 11
SW - 11
I - 7
0 - 2
hab ich das so richtig verstanden?
schau Dir mal die Werte X_AVM_DE_TotalBytesReceived64 und X_AVM_DE_TotalBytesSend64 an, die scheinen nicht auf null zu fallen...
es wird ein neuer Wecker-DP unter
alexa2.0.Echo-Devices.G070RQxxxx.Alarm.dd7efe51-049d-4b26-8ff2-xxxxxx
angelegt mit den den DP
enabled, time und triggered
triggered geht auf true wenn der "Wecker klingelt" und das wird mit
on(/^alexa2.0\.Echo-Devices\.G070xxx\.Alarm\..+triggered$/, function(dp) {});
getriggered.
Mir it sogar aufgefallen, das es ca. 2-3 Sekunden braucht bis der Weckton zu hören ist, da haben sich die Rolläsen schon in gange gesetzt.
Du könntest also auch ein "Stop" an den Echo senden, dann würde erst gar kein ton zu hören sein sondern nur deine gewünschen Aktionen abgearbeitet werden.
@liv-in-sky
bei mir füttert es das "MaterialDesign Table"...
das klappt super...
ich kenne mich mit Blockly nicht wirklich gut aus aber im Grunde ist es auch nur visualisiertes JavaScript.
Eventuell geht aber sowas
der RegExp-Ausdruck muß für Blockly eventuell angepasst werden und muß natürlich auch auf deinen Echo angepasst werden.
warum verwendest Du einen doppelten "::"?
{p0:weatherunderground.0.forecastPeriod.0p.date;p1:weatherunderground.0.forecastPeriod.1p.date;p0==p1?'weatherunderground.0.forecastPeriod.2p.title'::'weatherunderground.0.forecastPeriod.1p.title'}
ich habe soetwas ähnliches in der Form:
{v:tr-064-community.0.devices.Tina-iPhone;v == "true" ? "#35ff05" : "#ff0000"}
@Jan1
Du kannst dich auch langsam mal an JavaSkript ran wagen...
on(/^alexa2.0\.Echo-Devices\.G090U61091570C7A\.Alarm\..+triggered$/, function(dp) {
setState("alexa2.0.Echo-Devices.G090U61091570C7A.Commands.deviceStop"/*Aelxa Stop*/, true);
});
damit triggerst Du deinen Wecker und Stoppst ihn sofort wenn er auslöst... Eigentlich solltest Du dann nichts hören und könntest beliebiege Befehle anfügen.
Danke, das klappt jetzt schon sehr gut.
Jetzt habe ich noch ein "Problem" mit ganztägigen Terminen. In der Wochenübersicht werden diese von 0:00 bis 0:00 dargestellt und reichem auch noch in den nachfolgenden Tag.
Edit: @Scrounger wie müsste die das Calendar Object aussehen, damit es ganztägiges ereignis angezeigt wird aber eben nur in der Kopfzeile... dann könnte ich das script versuchen dementsprechend anzupassen.
naja, im Grunde überall wo Du verschiedene DP überwachenmöchtests die entweder mit dem gleichen Pfad beginnen oder aber gleich enden... Das gilt für eine Menge Adapter...
ja, das habe ich auch gesehen. mit der KNX extension kann bis zu 500 Gruppenadressen verwalten.
Das wäre dann schon recht interessant...
Ich hatte geles, das mit der vorgängerversion 700 Gruppenadressen verwaltet werden konnten.
Ich habe mich mit KNX noch nicht beschäftig und weiß nicht wie die Anzahl der Adressen zu verstehen ist.
Interessant wäre halt ob man die "Jung 4072.02LED KNX Taster BA 2-fach Mittenstellung" verwenden kann.
Das würde mir besser gefallen für den optischen Eindruck...
verstehe ich das richtig? Ich kann auch die KNX-Busschalter für Loxone Tree verwenden.
Die Taster von Jung 2fach Mittelstellung geben ja bis zu 4 Schaltmöglichkeiten. Das wäre ja genial...
@Homoran
danke für deine Mühe- leider liefert es keine Werte im javascript
let casescontainer_ = /'ong>([\-\s\.\(\)\&\;\w]+)<\/strong><\/p>[^+]+([+\d\,]+)[^\d]+([\d\.]+)[^\d]+([+\d\,]+)[^\d]+([+\d\,]+)<\/'/
let casescontainer = casescontainer_.exec(body)
erst einmal Danke dafür.
Also ich habe festgestellt das die Corona-Zahlen für die Landkreise de das RKI rausgibt schon sehr stark von den hier vom Ministerium veröffentlichten abweichen. Also versuche ich die Pressemitteilungen zu parsen.
es geht mir im Grunde nur um die "Tabelle".
unction detailedLink(link) {
if (link.match(/^https?:\/\//)) {
request = request || require('request');
request (link,
function(error, response, body){
htmlbody = body
let htmlcontent = htmlbody
let container = htmlcontent.split('<main id="maincontent">')
if(container[1]) {
let _headline = new RegExp('COVID-19: (.+?)</h1>')
let headline_ = _headline.exec(container[1])
let _news = new RegExp('<p><strong>(.+?)</strong></p>')
let news_ = _news.exec(container[1])
let news = news_[1].replace('<p>', '')
news = news.replace('</p>', '')
news = news.replace('<strong>', '')
news = news.replace('</strong>', '')
let headline = headline_[1].replace('</h1>', '')
log(headline)
log(news)
let casescontainer_ = new RegExp('<p><strong>kumuliert<\/strong><strong><\/strong><\/p>(.+?)<\/tbody>')
let casescontainer = casescontainer_.exec(container[1])
log(casescontainer[0])
}
})
}
}
der code ist noch nicht aufgeräumt und auch noch nicht schick gemacht...
Ich stehe irgendwie mit RegExp auf dem Kriegsfuß.
ich möchte gern den Inhalt einer webseite parsen und hierbei speziel einen Auschnitt herausfiltern.
ich möchte gern alles zwischen <p><strong>kumuliert</strong><strong></strong></p>
und </tbody>
zurückbekommen.
let casescontainer_ = new RegExp('<p><strong>kumuliert<\/strong><strong><\/strong><\/p>(.+?)<\/tbody>')
let casescontainer = casescontainer_.exec(inhaltweb)
es kommt aber nur 'null' zurück.
wo liegt mein Fehler?
ich habe ein script "geschrieben" welches aus den dwd Unwetterwarnungen einen JSON erzeugt, der dann als Allert angezeigt wird.
Der Text wird als "onclick" erzeugt und befüllt einen State.
var dwdBackground = [
"", // 0
"#ffeb3b", // 1 - Wetterwarnungen (Stufe 1)
"#fb8c00", // 2 - Warnungen vor markantem Wetter (Stufe 2)
"#e53935", // 3 - Unwetterwarnungen (Stufe 3)
"#880e4f", // 4 - Warnungen vor extremem Unwetter (Stufe 4)
"", // 5 -
"", // 6 -
"", // 7 -
"", // 8 -
"#c99afe", // 9 - Hitzewarnung
"", // 10
"#c9f", // 11 - Keine Warnungen
"", // 12 -
"", // 13 -
"", // 14 -
"", // 15 -
"", // 16 -
"", // 17 -
"", // 18 -
"#fe68fe", // 19 - UV-Warnung
];
var indexwar;
on({id: /^dwd\.0\..+object$/}, function (dp) {
var warning_id = dp.id;
let pos= warning_id.lastIndexOf('.');
warning_id = warning_id.substr(0, pos);
log("Warning_id: " + warning_id);
let headline_state = getState(warning_id + '.headline').val
let headline = "<p onClick=\"servConn.setState('0_userdata.0.materialdesignwidgets.onlick_alert','" + warning_id + "')\">" + headline_state + "</p>";
let level = getState(warning_id + '.level'/*Warning level*/).val;
let backgroundcolor = dwdBackground[getState(warning_id + '.severity').val]
if (headline_state != '') {
log("hintergrund: " + backgroundcolor);
log("headline: " + headline)
materialDesignWidgets.sendTo('0_userdata.0.materialdesignwidgets.alarmDWD', headline, backgroundcolor);
}
})
jetzt aktualisiert dwd alle 5 Minuten die Warungen und schreibt diese immer wieder neu in die JSON. ich würde jetzt gern den alten eintrag mit der selbern Warning_id löschen, so das immer nur die letzt drin stehen bleibt bzw. beim löschen der Warnung auch der ensprechende Eintrag gelöscht wird.
@liv-in-sky
bei mir füttert es das "MaterialDesign Table"...
das klappt super...
natürlich das okay... dafür ist doch so eine Community da.
dieser spezielle teil kommt aber tatsächlich von @fastfoot
let myStations = getObject('system.adapter.tankerkoenig.0').native.stationsarray;
ich kannte getObject() bisher auch nicht aber das eröffnet mir gerade wieder noch mehr Mögichkeiten.
ja, danke! habe ich umgesetzt. Ich hab auch noch eine sortierfunktion eingebaut. So ist jetzt immer die günstigste Tankstelle oben...
var station_png = {"005056ba-7cb6-1ed5-8cbd-4897fe54e42b" : "/vis.0/Star.png",
"aa1c6fb6-439a-4915-8ad8-0f67697a65e2" : "/vis.0/ESSO.png",
"5a5ed93f-84aa-4517-dc7c-c888f278b5c7" : "/vis.0/Test/img/Tanken/Gulf-Tankstelle.png",
"6649f1c1-5154-4641-945c-96419ea88f01" : "/vis.0/Test/img/Tanken/total.png",
"533abf42-a618-4d18-802e-fabdf0429269" : "/vis.0/Test/img/Tanken/Shell_logo.svg.png",
"528da962-bd28-4f5d-8bd0-cc01ba9b538c" : "/vis.0/Test/img/Tanken/Shell_logo.svg.png",
"51d4b47c-a095-1aa0-e100-80009459e03a" : "/vis.0/Jet.png"
};
on({id:'tankerkoenig.0.json'}, function (obj) {
let json_tank = '';
json_tank = [];
let myStations = getObject('system.adapter.tankerkoenig.0').native.stationsarray;
let json = JSON.parse(getState('tankerkoenig.0.json').val);
let stations = Object.keys(json.prices);
stations.forEach((station,i) => {
myStations.forEach((arr, j) => {
if(arr[0] == station) {
json_tank.push(
{
"img": station_png[station],
"name": arr[1],
"preis": json.prices[station].diesel,
"status": json.prices[station].status
})
}
});
})
json_tank.sort(function (a, b) {
return a.preis == b.preis ? 0 : +(a.preis > b.preis) || -1;
});
setState('0_userdata.0.materialdesignwidgets.tankerkoeningTabelle', JSON.stringify(json_tank), true);
})
so, ich hab's hnbekommen.
das skript schreibt jetzt ein JSON Array aus Objekten in einen Datenpunkt.
und den kann man dann im Materialdesignwidget Table verwenden.
var station_png = {"005056ba-7cb6-1ed5-8cbd-4897fe54e42b" : "/vis.0/Star.png",
"aa1c6fb6-439a-4915-8ad8-0f67697a65e2" : "/vis.0/ESSO.png",
"5a5ed93f-84aa-4517-dc7c-c888f278b5c7" : "/vis.0/Test/img/Tanken/Gulf-Tankstelle.png",
"6649f1c1-5154-4641-945c-96419ea88f01" : "/vis.0/Test/img/Tanken/total.png",
"533abf42-a618-4d18-802e-fabdf0429269" : "/vis.0/Test/img/Tanken/Shell_logo.svg.png",
"528da962-bd28-4f5d-8bd0-cc01ba9b538c" : "/vis.0/Test/img/Tanken/Shell_logo.svg.png",
"51d4b47c-a095-1aa0-e100-80009459e03a" : "/vis.0/Jet.png"
};
on({id:'tankerkoenig.0.json'}, function (obj) {
let json_tank = '';
json_tank = [];
let myStations = getObject('system.adapter.tankerkoenig.0').native.stationsarray;
let json = JSON.parse(getState('tankerkoenig.0.json').val);
let stations = Object.keys(json.prices);
stations.forEach((station,i) => {
myStations.forEach((arr, j) => {
if(arr[0] == station) {
json_tank.push(
{
"img": station_png[station],
"name": arr[1],
"preis": json.prices[station].diesel,
"status": json.prices[station].status
})
setState('0_userdata.0.materialdesignwidgets.tankerkoeningTabelle', JSON.stringify(json_tank), true);
}
});
})
})