Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add new option to run programs with condition check (runprogram-cc.cgi) #60

Merged
merged 4 commits into from
Sep 22, 2023
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
run programs with condition check
  • Loading branch information
Baxxy13 committed Feb 19, 2022
commit 34f53d6f3a85be5a2fc9f3307949f64f5c2a3dd0
5 changes: 3 additions & 2 deletions xmlapi/info.html
Original file line number Diff line number Diff line change
@@ -39,7 +39,7 @@
<td>Liste alle Ger&auml;te mit Kan&auml;len und aktuellen Werten
<br><b>Parameter:</b> ise_id, show_internal=1 (gibt zus&auml;tzlich das Attribut state aus)
<br><br><b>HMW-RCV-50 BidCoS-Wir!</b>
<br>Damit die virtuellen Wired Kanäle der CCU angezeigt werden, muss der Name "HMW-RCV-50 BidCoS-Wir" der Komponente auf der CCU in einen X Beliebigen umbenannt werden.</br>
<br>Damit die virtuellen Wired Kan&auml;le der CCU angezeigt werden, muss der Name "HMW-RCV-50 BidCoS-Wir" der Komponente auf der CCU in einen X Beliebigen umbenannt werden.</br>
</td>
</tr>

@@ -49,7 +49,8 @@
<tr><td><a href="./programlist.cgi">programlist.cgi</a></td><td>Liste aller Programme</td></tr>
<tr><td><a href="./programactions.cgi">programactions.cgi</a></td><td>&auml;ndern der Programmaktionen activ und sichtbar <br><b>Parameter</b>: programactions.cgi?program_id=1234&active=true&visible=true</td></tr>
<tr><td><a href="./protocol.cgi">protocol.cgi</a></td><td>Gibt das Systemprotokoll aus<br><b>Parameter:</b> protocol.cgi?clear=1 l&ouml;scht das Systemprotokoll</td></tr>
<tr><td><a href="./runprogram.cgi">runprogram.cgi</a></td><td>Startet ein Programm mit der angegebenen ID <br><b>Parameter</b>: z.B. runprogram.cgi?program_id=1234</td></tr>
<tr><td><a href="./runprogram.cgi">runprogram.cgi</a></td><td>Startet ein Programm ohne Bedingungspr&uuml;fung mit der angegebenen ID (es wird immer das 1. DANN ausgef&uuml;hrt!) <br><b>Parameter</b>: z.B. runprogram.cgi?program_id=1234</td></tr>
<tr><td><a href="./runprogram-cc.cgi">runprogram_cc.cgi</a></td><td>Startet ein Programm mit Bedingungspr&uuml;fung mit der angegebenen ID (es wird der Block ausgef&uuml;hrt der WAHR ergibt, andernfalls das SONST... wenn vorhanden!) <br><b>Parameter</b>: z.B. runprogram-cc.cgi?program_id=1234</td></tr>
<tr><td><a href="./roomlist.cgi">roomlist.cgi</a></td><td>Liste aller R&auml;ume mit Kan&auml;len</td></tr>
<tr><td><a href="./rssilist.cgi">rssilist.cgi</a></td><td>Liste aller Ger&auml;te mit Signalst&auml;rke</td></tr>
</table>
57 changes: 57 additions & 0 deletions xmlapi/info.html.orig
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<!DOCTYPE html>
<html>
<head>
<title>XML-API</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<style type="text/css">
a {color: blue;}
table { width:100%; }
td, th { border: 1px solid;}
</style>
</head>
<body>
<table cellpadding="5" cellspacing="5">
<tr>
<th colspan="2">XML-API</th>
</tr>
<tr><td><a href="./version.cgi">version.cgi</a></td><td>Version der XML-API</td></tr>
<tr><td><a href="./devicelist.cgi">devicelist.cgi</a></td><td>Liste aller Ger&auml;te mit Kan&auml;len. Enth&auml;lt u.a. die Namen, Seriennummern, Ger&auml;tetypen und ID's
<br><b>Parameter:</b> show_internal=1 (gibt zus&auml;tzlich die internen Kan&auml;le aus)</td></tr>
<tr><td><a href="./functionlist.cgi">functionlist.cgi</a></td><td>Liste aller Gewerke mit Kan&auml;len</td></tr>
<tr><td><a href="./favoritelist.cgi">favoritelist.cgi</a></td><td>Liste aller Favoriten und Usern
<br><b>Paramter:</b> favoritelist.cgi&show_datapoint gibt zus&auml;tzlich die Attribute datapoint_id und datapoint_type aus.
</td></tr>
<tr><td><a href="./mastervalue.cgi">mastervalue.cgi</a></td><td>Gibt ein einzelnes oder mehrere (1234,5678) Ger&auml;te mit den Namen und Werten der MasterValues zur&uuml;ck<br>
<b>Parameter:</b> mastervalue.cgi?device_id=1234 (gibt alle MasterValues des Ger&auml;tes zur&uuml;ck) | mastervalue.cgi?device_id=1234&requested_names=TEMPERATURE_COMFORT,TEMPERATURE_LOWERING
(gibt nur die MasterValues TEMPERATURE_COMFORT und TEMPERATURE_LOWERING zur&uumlck) </td></tr>
<tr><td><a href="./mastervaluechange.cgi">mastervaluechange.cgi</a></td><td>Setzt ein oder mehrere (TEMPERATURE_LOWERING,TEMPERATURE_COMFORT) MasterValues f&uuml;r ein oder mehrere (1234,5678) Ger&auml;te<br>
<b>Parameter:</b> mastervaluechange.cgi?device_id=1234,5678&name=TEMPERATURE_LOWERING,TEMPERATURE_COMFORT&value=17.0,22.5 (Setzt Absenktemperatur f&uuml;r Ger&auml;t 1234 auf 17 Grad und Komforttemperatur f&uuml;r Ger&auml;t 5678 auf 22.5 Grad</td></tr>
<tr><td><a href="./scripterrors.cgi">scripterrors.cgi</a></td><td>Sucht in den letzten 10 Zeilen von /var/log/messages nach Homematic-Script Fehlermeldungen</td></tr>
<tr><td><a href="./sysvarlist.cgi">sysvarlist.cgi</a></td><td>Liste alle Systemvariablen mit Werten<br>
<b>Parameter:</b> sysvarlist.cgi?text=true - gibt den Text des aktuellen Werts in den Attributen value_text aus.
</td></tr>
<tr><td><a href="./sysvar.cgi">sysvar.cgi</a></td><td>Eine einzelne Systemvariablen mit Werten.<br><b>Parameter</b>: ise_id</td></tr>
<tr><td><a href="./state.cgi">state.cgi</a></td><td>Gibt ein einzelnes oder mehrere ("123,456,...") Ger&auml;te mit Kan&auml;len und aktuellen Werten zurueck <br><b>Parameter</b>: z.Bsp. state.cgi?device_id=12796 | state.cgi?channel_id=12796 | state.cgi?datapoint_id=12839 (gibt nur Value() zurueck)</td></tr>
<tr>
<td>
<a href="./statelist.cgi">statelist.cgi</a>
</td>
<td>Liste alle Ger&auml;te mit Kan&auml;len und aktuellen Werten
<br><b>Parameter:</b> ise_id, show_internal=1 (gibt zus&auml;tzlich das Attribut state aus)
<br><br><b>HMW-RCV-50 BidCoS-Wir!</b>
<br>Damit die virtuellen Wired Kanäle der CCU angezeigt werden, muss der Name "HMW-RCV-50 BidCoS-Wir" der Komponente auf der CCU in einen X Beliebigen umbenannt werden.</br>
</td>
</tr>

<tr><td><a href="./statechange.cgi">statechange.cgi</a></td><td>&auml;ndern eines oder mehrere Kan&auml;le-Zust&auml;nde mit der angegebenen ID<br><b>Parameter</b>: z.B. statechange.cgi?ise_id=1234&new_value=0.20 oder statechange.cgi?ise_id=1234,1235&new_value=0.20,1.45</td></tr>
<tr><td><a href="./systemNotification.cgi">systemNotification.cgi</a></td><td>Gibt die System Meldungen aus</td></tr>
<tr><td><a href="./systemNotificationClear.cgi">systemNotificationClear.cgi</a></td><td>L&ouml;scht die vorhandenen System Meldungen</td></tr>
<tr><td><a href="./programlist.cgi">programlist.cgi</a></td><td>Liste aller Programme</td></tr>
<tr><td><a href="./programactions.cgi">programactions.cgi</a></td><td>&auml;ndern der Programmaktionen activ und sichtbar <br><b>Parameter</b>: programactions.cgi?program_id=1234&active=true&visible=true</td></tr>
<tr><td><a href="./protocol.cgi">protocol.cgi</a></td><td>Gibt das Systemprotokoll aus<br><b>Parameter:</b> protocol.cgi?clear=1 l&ouml;scht das Systemprotokoll</td></tr>
<tr><td><a href="./runprogram.cgi">runprogram.cgi</a></td><td>Startet ein Programm mit der angegebenen ID <br><b>Parameter</b>: z.B. runprogram.cgi?program_id=1234</td></tr>
<tr><td><a href="./roomlist.cgi">roomlist.cgi</a></td><td>Liste aller R&auml;ume mit Kan&auml;len</td></tr>
<tr><td><a href="./rssilist.cgi">rssilist.cgi</a></td><td>Liste aller Ger&auml;te mit Signalst&auml;rke</td></tr>
</table>
</body>
</html>
33 changes: 33 additions & 0 deletions xmlapi/runprogram-cc.cgi
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/bin/tclsh

load tclrega.so

set program_id "-1"

catch {
set input $env(QUERY_STRING)
set pairs [split $input &]
foreach pair $pairs {
if {0 != [regexp "^(\[^=]*)=(.*)$" $pair dummy varname val]} {
set $varname $val
}
}
}


puts -nonewline {Content-Type: text/xml
Access-Control-Allow-Origin: *

<?xml version="1.0" encoding="ISO-8859-1" ?><result>}

array set res [rega_script "if ($program_id > 0) { object obj = dom.GetObject($program_id); if (obj && obj.IsTypeOf(OT_PROGRAM)) { obj.State(1); Write(obj); }}"]

if { $res(STDOUT) != "" } {
puts -nonewline "<started program_id=\"$program_id\"/>"
} else {
puts -nonewline {<not_found/>}
}

puts -nonewline {</result>}