From 90385c774a68b59df343d6141ecd42be9cf97c85 Mon Sep 17 00:00:00 2001 From: Benjamin Braatz Date: Wed, 9 Nov 2022 14:43:32 +0100 Subject: [PATCH] Add documentation. --- README.md | 7 +--- conf.json | 102 +++++++++++++++------------------------------- doc/DebugView.png | Bin 0 -> 73828 bytes doc/coMessage.png | Bin 0 -> 31182 bytes doc/index.md | 81 ++++++++++++++++++++++++++++++++++-- 5 files changed, 111 insertions(+), 79 deletions(-) create mode 100644 doc/DebugView.png create mode 100644 doc/coMessage.png diff --git a/README.md b/README.md index cdc7855..2dcbc94 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,11 @@ # ControlPi Plugin for Graph Connections This distribution package contains a plugin for the [ControlPi system](https://docs.graph-it.com/graphit/controlpi), that -<…> +connects to a given graph and pushes the messages matching the given filter +to it. Documentation (in German) can be found at [doc/index.md](doc/index.md) in the source repository and at [https://docs.graph-it.com/graphit/controlpi-graph/](https://docs.graph-it.com/graphit/controlpi-graph/). Code documentation (in English) including doctests is contained in the source files. -An API documentation generated by pdoc3 can be found at -[doc/controlpi_plugins/index.html](doc/controlpi_plugins/index.html) in the source -repository and at -[https://docs.graph-it.com/graphit/controlpi-graph/controlpi_plugins/](https://docs.graph-it.com/graphit/controlpi-graph/controlpi_plugins/). diff --git a/conf.json b/conf.json index a0754fc..0fb89eb 100644 --- a/conf.json +++ b/conf.json @@ -1,73 +1,35 @@ { - "Example Server": { - "plugin": "WSServer", - "port": 8080, - "web": { - "/": { "module": "controlpi_plugins.wsserver", - "location": "Debug" } - } - }, - "Test Graph": { - "plugin": "GraphConnection", - "url": "tls://graph.example.com", - "crt": "graph.crt" - }, - "Example State": { - "plugin": "State" - }, - "State to Graph On": { - "plugin": "Alias", - "from": { "sender": { "const": "Example State" }, - "state": { "const": true } }, - "to": { "target": "Test Graph", - "command": "set", - "node": "testnode", - "guid": "0123456789", - "attribute": "testboolean", - "value": true } - }, - "State to Graph Off": { - "plugin": "Alias", - "from": { "sender": { "const": "Example State" }, - "state": { "const": false } }, - "to": { "target": "Test Graph", - "command": "set", - "node": "testnode", - "guid": "0123456789", - "attribute": "testboolean", - "value": false } - }, - "Get from Graph": { - "plugin": "Alias", - "from": { "target": { "const": "Get from Graph" }, - "command": { "const": "execute" } }, - "to": { "target": "Test Graph", - "command": "get", - "node": "testnode", - "guid": "0123456789", - "attribute": "testboolean" } - }, - "Set with Key": { - "plugin": "Alias", - "from": { "target": { "const": "Set with Key" }, - "command": { "const": "execute" } }, - "to": { "target": "Test Graph", - "command": "set key", - "node": "testnode", - "key attribute": "name", - "key value": "test", - "attribute": "testnumber", - "value": 42000 } - }, - "Get with Key": { - "plugin": "Alias", - "from": { "target": { "const": "Get with Key" }, - "command": { "const": "execute" } }, - "to": { "target": "Test Graph", - "command": "get key", - "node": "testnode", - "key attribute": "name", - "key value": "test", - "attribute": "testnumber" } + "Master": { + "plugin": "WSServer", + "port": 8080, + "web": { + "/": { + "module": "controlpi_plugins.wsserver", + "location": "Debug" + } } + }, + "Example State": { + "plugin": "State" + }, + "Graph": { + "plugin": "Graph", + "url": "tls://graph.example.com", + "crt": "graph.crt", + "name": "te", + "filter": [ + { + "sender": { "const": "Example State" }, + "state": { "const": true } + } + ] + }, + "Graph-Sync": { + "plugin": "Periodic", + "seconds": 10, + "message": { + "target": "Graph", + "command": "sync" + } + } } diff --git a/doc/DebugView.png b/doc/DebugView.png new file mode 100644 index 0000000000000000000000000000000000000000..fd5b4123e25fac792ef1f82fec1fbcde5762a2b8 GIT binary patch literal 73828 zcmagFWl&sQ6E%vv3=YBFHGu##xVr>*36S6tEV#P{*AO5Chv4q6A;{qFHn_u`ytlp| z-;>T>Lx-}Sq2mB6&ef-45pl{q&f@?0uTlURuBaV`U&xzE)@(6 z6^xvun1+YZQ8r?uX5U;t(K7Ta21S;68FLB~E)f?Fm&FtSHYFfRcHHU95Ml!+P;Y9_=}#jBx0AsXyd_&z2S zms|b)ndhS{)+v~dNQHd+H#ICS)jysQgg~hye`Mrm$p}J2bh6uv(cOshs%kvCM6Ltl z)0MX0d2DB27*eZDyNAn5Q`xk`8UJy4FsR;32!V=6;S{W~g#3`*^=18YQB*QvY)bxu zYyo3a0Z)^-RxbUrso@c;iP~M{n17!?h<=T;n%3jXPOBs}%;t{%grKT1FGyBT=|tM~G1+ zj$bla56YkvXii)}xX+7h? z{HAE?;bC)i)d5-O4vB&1f-J;+iu225HhPv4kb|s(aB}W zev^)&S?>wcUfeRvUwUbnW6>UpBI4X0Uv6=}UP65GlhLYPBEn_2)@ZQsV?5P({_^(x zV20HbvX*Di;`DCZxbcIWVz<)NcRBXEi>=ukpzBUF8R%2*ahsE$(lkv#pocvZ+FG+cxvLj!)gXp7+6b@8K{KiT)cn0itw&yi~V2nni4%T|`{! zv0#W^44PjKhozcIgR!j$1+3p}lP8LelM8)lVu2Ny8y>@Dl&4!3bdR5+kCY2W!70mP z8Boqj;@)H&swZ#p&Tep4Szqp+;USO*~F5<3AF1b9?E?i zrk9tQj|EH3KKfpq{Ae?%qFi`({+!)wHBG6GtYw)d{iQivU6WKHh~(eOL0?n|>E6)`cH+&||u8(bI zjEZzlcywBK?{i98d5W?r!nio>V~*-QAu#_}R(b{8jH- zW~WL#&70hwLX*nXN4A>)vMKDh3hHz!3{fc+@#v`>a&xiA+r=4;sg+tXA(ztw5rmUnw&IeCvx|lo;<1k ziu%s5KRFYn5=1=peu%l~WpP(+pB9Q#P8z;(mjV|byEePeBoe9JVV`bV6NsvR0_H&#u#!Mxk0Vm{NI9BfB0HyL%N17ka_QBg z=8$5YO*}3oDu#qXtby~|=Xy_F^*wz7yryWiAspr}*Jao|5lX z@9A9f+x*$6S~b2V-)i;r{Z+Fcn=z|JZ!CMw4o7^RNX+!^bg7}l{q<4FM5)%Uf_^%gCI?jx`A{N50B6Z2ad1Qm^}E3hR2C{%hVYBb@; zr?=_%?rB`6$*Hn%^zFU%A-zdudCrPVV%vfDo5sLKo0@ZeR7N|X>z8Ao`@;>7?>Krm z*c1f`f*a5fPOFec)n29{F7clJo`0dKKyMq3r_qnn$2y5Hw#?VGg=2c@qek4<$_5b?&whvJQp{>??PTC{;U&5T`N$^w@md&9H?oxn zVT}G{uo{=2kz6)U;UY`)>RXBP6fJ#zw>0FZ#5ppLjtg+n8#>s zy5A6|dA|UNNE`_vhEZ5pFk(Mn=JeEt7^Ix?!~4}o^}?i}7xENo_C=xw^O7sF7tj&nYIesJ>Y8INuQ027^3huOnW`FcTs0{o$zgr;K)L^ASHfhl zBW5xgWldZ6eKqGxyFOD&R!Egmwev0`$EB$tLg_3+bU9gS$KG%}m9P$wucHbDYZu~+ z-_3P-fo!hS)b?PxWHOPpd&)c5^8-;5tmFBTR_X3We4sDcv@uKaOZV}YQlrX*ECDa0 zKc?HOI6K4CS097RQ$b$WqZ2qJQ-#TheoAwT?ad2jv*1KRB2gxEalNB4Hn-cNGEU?6 zq-*1wD!Ud^d^6-66@(d%ERxo^_*{e(y$~e=^*rSdH3~(sXFufefuQc*p#SphPF7SM zLLkpJGo2OIaq3$KBVak;+|eY^^LkLs^KR+1cL@(S;hW@BZYPd5jb!wtNWf-}y!hwU zx&54^fiDl~aROhvb*g-9TE>?x7Gn*uR4O&wBDcoVd)7~BWMb(oMv|sF(Alct;gH?b z?>uYGE3uBI1IhI%K;A!E1+5S5EVJhWb$`>p>%Vjsvtvd-je7fnhZwzC9!~C%48By~ zR{2AX#wX5J*J(eu=-0fJRoyybisy`z2Ok(T>eSe`UG4$>&BA8-CpP~J>QwlEDmpil zU3^<=uXFzk5aHkuj{cK?-%-2;NY?umts7{&3rE|_mY9NUBFiJ8U@%_lWVM}HB`HkC zWMN#%hW>Nyhp8qnhxsbc(rpDsD7l+uH~ukEs;;mNQ2PcqDk1>Hxw%| zjoWMw6~u6EDIq(Sbav`)9dI+y?8n#4=CT43C^T!jF=7UX64FG@!zI@A{EA_A)3Fx^ z{axu%!62|jkS8P$NGEFSC&i!T_UJPxCu@cI8FV<#*3dk0zVtr;k{i!AisQzD;5~&6 zND^~GH8&K#Zo_de+s;4g3aa$`Q%lsP25OF^31_oq2}$H?eY3S_@;YsM8|l}JwYee< z#uyHAPPZE$9ZF})^^Y)Rw!o%&wVokOnjv~+lrTjM##D!rM%w(WUU(;;z ze@tJ5cOdwDeRsajM#omE8HK$r%sH zZI9z(9xM*9eSbl&z06p~AtcJs%tUsw$-B$gnkb3xGpVjEqfK8Z#$Ktre1Nu0$idYX zv@W>+6iJQ`EUTrZQ21}5v?AS^2u^sT^trC^kk-?2H>CpEO-3$>rY;NUEQ$_q>6PoZ z`Gm#t0{xZ)x^Q9(_dsJ%O38BGJooh6k<>Z66g-I~oh&M%LM`??p5A{w)u`!pc6Rq7 znHRwB_U5CGO0(ZnG6zjC77B$Hn`z+fPv^7k{ z0v9bY#4MH2D`@iK@y;dtWn((M=BMYOn{M^z>{fLPUVW2Da_(<3sWS>Ya%DQ)7R&cB zQ{~zselu64_3VX8QQtqyq#Rtm8o5I!+Mmyp<%#Yy9*bc7ug>DH4S>iVb)*t44r|y(4TZ^kdHdog0Z78npxQ;-~U*7UR=ke}E0O115 zAQ4c)Nhtj7Q3b~H;l2)6_<8lB=eKH7ctXBxB!=$R(YjyxQqKR!5?csxhDTMqB;3yL zzwF8=iv3ih-9n^65jVk5$fgh5;?UDGYV)9e%W0hClc^OI8Fe>EiBqcb-+1~XahQaN z#z&D~hXjC4(S6ibC=-$y2VWDMJMZ4}-nH7}&9^(}{n1P!waVxhwKyi%dEWdtr~JQE z2$CdP6-Dlg_B}D1W)3+q+mc;Xl8@tFfikfu?HuB9CmwsWvh&fo~K{5r({S~|cV7pj7) z2L8>{{&zs7D5^)0l7X)7f0~St1k)GmkGpmEPp!*HifR;SVWdez82Ycn_eX#eh1v|W zcBb*KjlrJMLT!G?K~<3am)ikg{@4r?SM=Y6`o9qIpoH4Ia-*n2^RJ}?U;t2?VLU*| z|JqmQ!ylX5t-5jln+pH8G=e|WW|+>+;(yw_A_FB)H$r$R;s071%0-}&n+04kgk@ZB67FcZXr0?xv9g-3HTNTNT(ZH{&v^(>16vC}q$I3k%n8I>z0e zZ7Lj07Z;jz1>#bRBQ(rGF8%2hQU*iNiRe7fx716u*i}?Eo&I4BL<|+ms#jV)X@iil zQ@G9h2iv@Eyb0d89f7AB9E|s8%QH>7pQvrS0ui0JhY5s!Rce*%#S@wKMG~ktIa_3Q zCJ1@CJ>9JOy%;Xk+3cP_12CkciK(v+W@^aYuMRW~-B4to9&SD6 zEmg$aX0j(sO?BE`5qOMS`@f6sca43nk_jb*gOi!m#Q7Xn*epg;l6h@r5j=4~IKZ_t zTzYwYG0=>89@*rxrwU_yy7QY8X zK3~elk_mjPglE+%OJmcoSEQ0f>}7I82&R~z|4TBzRYk~(BwzKp$sYUt^<9xN&!;`r zMY`wlY~a*S3k7{yWQ4Gdz9?ib@>aDY|EdIGpU=i@Smc6qnx$GZ)YQN7W#-mJoi_Vt z2C{(e${fb+Wp|z%)aK#jn52A3A}^1>-6&DWpZ|LU zLx0~cWw^gYHGB>nDjq`;5vS1}B)%_-=z*CcRxW`i# zRU@y9-kP2SaKK^bZ@55Y+v}rw!7Rj;*X9GUGa{_IKMS^olSk}cJ2JQtGh&hONJ8VH z=%vYGgz$KKeen8pwbCUcoVpWi>p7um{7SKCXcCduD^isvUcWi`@yL z;N1eHOfBf`ZXC`%Tpxe2Tdd#D^?ACQ^BwnrtObnw1nvg!#_qyk(`?B><;OD7Px=4I z2mU}ftUfFc3@TVgj0idIYS;I5HgkkqW1_-n9*o4HsBfHosAT%SFsj&!gza{x8v8PD z_Q(9DzzRKHs8bNW+roRAfV#j)Zv>tlHOZ}R?T24maU#$02Q#II=2_e2qTQ+}gk0v| za@cfv*fT^$1D@^=E9)cpf?tKxUhIs0X>eFw7!K+!9n3o$d%JpD;szC5Pz2=?>3+=x zAxp&D(#WZ-oU(7mESF@5UV zC5RecgV zqZFxsB1YARdZCL?w&QyDKF{PoAg+@fHq1;WmBaA;)?mWIJGd_@if_nCx_Q>>U~x8o ztBBN*2hyd>E}%-lDR15T%XIp^JQewcny-H}Jt8wB1VX$X$#Re&YyysJ{=x%f&#=^R z;)ub79ynB|h#*x*3=pYFzvMC#ek*_~RCKBHJ>^_K!pmA$(0zQX=fy#Ua4WVdBeC-b zs?<7N{4>>%nxz@*<+)Pa1K)JU>(_ z1%CsZN{n{=4V#VBYpO@0I%wVUR2n9MwtavD|9A{yhD(SJSG_@qj7%67`Q_=_)vq=$ z_b2xnFf1n=9Vzd*QCgeg+A{0}pvPeQh>PI>U`EKUw`J8pxK%G|g!@QggxK%8PV%eO z(9t|JH;fnk;FC6XL~8!rK$gU5ve%?_w&6IceTgAH(TQM(hli_QU535U(Dho8c6 zbMWeWLjv4G&K}-HHZ~57^2Ky$N-~ zM4?XmklBVcYKH7=N8H5jh~>r|Km;dF%oRb&W#V7Xp97UdjYM@q=DCW)h>$`2P!u!A zqmDL@2f`U)+=>LpF~9r1XY5JiW&$+Y%Jg3so~txYohj8mTvj(3G!G!dulfq@2Hx*8 zk~6?dkjMKWP%{B4O`x%u0zJE1v%qY3RgtY*(F*J|YB$lN`5LRZ%FQ#|byPU&-2qC! zB%`*^`>Xl{z)=d$LF1`*A1~t@Zb|0PZnxdte*d^uD(JO#27BL~Z-1_%U_H^oz_V5? zBj1kdbOo#gauE@q>(I$34W?QlYh6>DrD5v-pqXce`r~PkDb!9`XH=&?Ta=D~G}s_y zPeR+O6}?4a=$)%DtdYc!qsKwx`7lYfSV6Ue-Z=vM#WxLS-1Pbg1*;lf zfF+t-H|tmj&J;01a-uhM|kJ&>s`CyxrQQnP^{YWcRP=9s4a2GWt_CppA^ ze-mpHmCihHfGSQnL0Z{rhu`WtUs)p{(Zn8HC3e~$;7!IwhkA8(_Un$HtE>L42On_` zem`G%7rPs@f)~I>cEhTEOUKiv%m5zilhrwh0I%B~>dGi_{^*T`g7G1{-`G0i&Lm;* z$=bZ&YjaW)ce5~RTPg&kJK!U&Tbhthba^PVTU9>IUuchl0!?0L7rrBC0NL5XBoM;^Egbnz zwkcFdoz0<-Wtcr_#pNoNCRY`i##?_Idc54CjYi1!x-hG*7qKRtMjj?14uA%#)EB0nxrAXtxsb1M8qI( z4C+G5v5e0*q+9l4xbJF^Q4`z5K|y&jT~r?Q%2_(6uYw@VTM#aNDAFRfK)9^JIN2VN z|Ee1O(f>F)88!|qo|U3}f(sllZ)@m_%;^cN3bKc!iF3@*8;0&QgC4Hp&`#J>R7H=3 zFVud|kAVeW2ZO5Z7WvqN*IuNt(4l5a+v6yvKsgj!rBT~dOGM{V1UW>olbg$V6Y!p@vy;gUJbA|Xcg)+P@Dl(XSE5N? zUskXHaL7o4v4Ttf(5Jad>Lil~9YyD3%rCQ068f-UHr-)1@OXD|HCr8;&e(g>i!VJH|#z7E#_q-2rwVO?ANz119CM`pJ*8t`YrA@-NM zUCOrC=;CBN?+3p!jzRqWnbrmY-Tsb*9;!>Np6_t!WT|p}?~9F^-ik{`Up%t9nRG{c zb(+K6h&EwS3Ln{gJNa;^>*BeN6L3#muno<%g46j>EN{+&eCEo8_B~B9Su|Om6!mI9 zvd3g)u2~U71+2U#9Gk&SJIvP-PYykG(Z-XbXA`F%B!s<@wQb8Hoz6>vz6t zp17~Q>)pA<{!D4A?==KLoV1ItYY;Cmo-s}LsI$X~tTl{~P3LPa{dhn)+!@jYQ8!wv z(7(n;pfe--)ji9Iw_dm?7;pfdXank1$|58*O{}iG?@kgI{Jkde) zR`uuS2M2v|%_V$ORg~g@qOg3rS}`N8mB0G-vQ(0P1OXaK{XLdX&{E9;T4@U6Be$$l zy+J~?OL#*NVQY#`#4(-6_y6RUwm1S;iy2}4>vf<0)Z&6U=HZon z(4OI^Z(wM$vZ=({I_=aN0CO}z`2}^mZ`uD!@Ba&RMInF2x4g?d8UI=0n^1{X(-Ko% z5dQ5#&`-Lcry~QY-pT$4QT0a%41kvSCjO)P|JMuu&lV8=XbW8f8Sa0leP}6)f&|qi z0%3U^#Qv#Tcq5QSl5?(xlXcw5QwV#pR<0l!n|d(fqSztO1QSFM(3icJ!xy6obuj|A zyW|}Y)d)j(O9_O%exdY2H+holY(cGxJ3ra&nQCKP`v`RHABh8>=|zyXaJ0u0RYs&i z^~)+0NinB~d)=Y}ABa7Qm~#}QQ^ zs7024UQYpiz18t_BDnhbGAdqGJ0$@@oGxIBS^JT#egq+s&yj=+Q1Pcs?6ewY{UZg5%2IVci_n4Sp{ofSL0==h zVnvx~tz1n@C&Zp|l~3D=JtT88sB8LXPm@r4YN(;7gTNS|V5Kq~wW~reQ4gY6PVq^S zN%M#oK_z=}i0h5SGfw=jcsRk@DiUKR;}1F8TBC71y~b?vK1q5%p)J`RqOG6I)Z(=L z4dnUBc*<(bjupu$nz(vH{(O4>Y9a^pnM#{8D}m{kne6bV^hf-;<

2-|>?k?4dAU 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 !i%8-mWM_rNRu9@w)vBN9K+_Oq*@GvE1r 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 O!OOzb#-yI$mG~b;Ep|Wv literal 0 HcmV?d00001 diff --git a/doc/coMessage.png b/doc/coMessage.png new file mode 100644 index 0000000000000000000000000000000000000000..97978abfcd1c292b3de60fa16904f0d2da9ea548 GIT binary patch literal 31182 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

&;*zGBtLsG~pVeNR)_vCm-|FHi+)yKK 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]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 J$tqX<{|hWc2I~L- literal 0 HcmV?d00001 diff --git a/doc/index.md b/doc/index.md index d891071..1cc6fbf 100644 --- a/doc/index.md +++ b/doc/index.md @@ -1,8 +1,7 @@ # ControlPi-Plugin für Graph-Connections -Dieses Paket enthält ein Plugin für das ControlPi-System, mit dem <…> - -## Benutzung -… +Dieses Paket enthält ein Plugin für das ControlPi-System, mit dem eine +Verbindung zu einem gegebenen Graphen aufgebaut werden kann, um die +Nachrichten, die den gegebenen Filter erfüllen, zu diesem zu übertragen. ## Installation Eine ausführliche Dokumentation ist in der Dokumentation der @@ -26,3 +25,77 @@ es auch direkt, ohne einen git-Clone installiert werden: ```sh (venv)$ pip install git+git://git.graph-it.com/graphit/controlpi-graph.git ``` + +## Benutzung +Eine minimale ControlPi-Konfiguration, die dieses Plugin benutzt, ist im +git-Repository enthalten: +```json +{ + "Master": { + "plugin": "WSServer", + "port": 8080, + "web": { + "/": { + "module": "controlpi_plugins.wsserver", + "location": "Debug" + } + } + }, + "Example State": { + "plugin": "State" + }, + "Graph": { + "plugin": "Graph", + "url": "tls://graph.example.com", + "crt": "graph.crt", + "name": "te", + "filter": [ + { + "sender": { "const": "Example State" }, + "state": { "const": true } + } + ] + }, + "Graph-Sync": { + "plugin": "Periodic", + "seconds": 10, + "message": { + "target": "Graph", + "command": "sync" + } + } +} +``` + +Die Verbindung zum Graphen wird über das `Graph`-Plugin hergestellt, wobei +das Attribut `url` die TLS-URL des Graphen enthält, das Attribut `crt` den +Pfad zum TLS-Client-Zertifikat (vom Verzeichnis, in dem `controlpi` +gestartet wird aus navigiert) und das Attribut `name` den Namen der +`coRoot`-Instanz im Graphen, an der die Nachrichten verknüpft und +verarbeitet werden sollen. +Der `filter` bestimmt, welche Nachrichten an den Graphen weitergeleitet +werden sollen, in diesem Fall nur Nachrichten, in denen der +Beispiel-Zustand `true` meldet. + +Auf dem Graphen muss das `controlpi`-Modul installiert und eine +`coRoot`-Instanz mit dem gegebenen Namen vorhanden sein, damit die +Strukturen, an denen die Nachrichten abgelegt werden, vorhanden sind. + +Die Nachrichten werden durch das Plugin gesammelt und an den Graphen +geliefert, wenn das Kommando `sync` and das `Graph`-Plugin gesendet wird. +Ein übliches Pattern ist, dass das `sync`-Kommando wie in diesem Beispiel +regelmäßig von einem `Periodic`-Plugin aufgerufen wird. + +In der Debug-Oberfläche sieht das Minimal-Beispiel so aus: +![Debug-Oberfläche](graphit/controlpi-graph/DebugView.png) + +Im Graphen können wir sehen, dass wegen des Filters nur die Nachrichten, +bei denen der Beispiel-Zustand auf `true` gesetzt wird, aber nicht +diejenigen, bei denen er auf `false` gesetzt wird, ankommen: +![coMessage im Graphen](graphit/controlpi-graph/coMessage.png) + +Um in umgekehrter Richtung Nachrichten aus dem Graphen an diese +ControlPi-Instanz zu schicken, wird das `WSServer`-Plugin benutzt. +Die URL zu diesem, z.B. `ws://graph.example.com:8080`, ist an der +`coRoot`-Instanz im Graphen hinterlegt, damit dort der Graphmodul-Service +`service('controlpi.send','te',['key'=>'value']);` verwendet werden kann. -- 2.34.1